URL
https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk
Show entire file |
Details |
Blame |
View Log
Rev 17 |
Rev 48 |
Line 47... |
Line 47... |
/**
|
/**
|
Software Semaphore Signal.
|
Software Semaphore Signal.
|
|
|
Increment the semaphore and run. This is a software mechanism.
|
Increment the semaphore and run. This is a software mechanism.
|
*/
|
*/
|
inline void aembSignal(volatile semaphore _sem)
|
static inline void aembSignal(volatile semaphore _sem)
|
{
|
{
|
_aembLockMTX();
|
_aembLockMTX();
|
_sem++;
|
_sem++;
|
_aembFreeMTX();
|
_aembFreeMTX();
|
}
|
}
|
Line 60... |
Line 60... |
Software Semaphore Wait.
|
Software Semaphore Wait.
|
|
|
Decrement the semaphore and block if < 0. This is a software
|
Decrement the semaphore and block if < 0. This is a software
|
mechanism.
|
mechanism.
|
*/
|
*/
|
inline void aembWait(volatile semaphore _sem)
|
static inline void aembWait(volatile semaphore _sem)
|
{
|
{
|
_aembLockMTX();
|
_aembLockMTX();
|
_sem--;
|
_sem--;
|
_aembFreeMTX();
|
_aembFreeMTX();
|
while (_sem < 0);
|
while (_sem < 0);
|
}
|
}
|
|
|
semaphore __mutex_rendezvous0 = 0; ///< internal rendezvous mutex
|
|
semaphore __mutex_rendezvous1 = 1; ///< internal rendezvous mutex
|
|
|
|
/**
|
/**
|
Implements a simple rendezvous mechanism
|
Implements a simple rendezvous mechanism
|
*/
|
*/
|
/*
|
/*
|
inline void aembRendezvous()
|
static inline void aembRendezvous()
|
{
|
{
|
if (isThread1())
|
if (isThread1())
|
{
|
{
|
wait(__mutex_rendezvous0);
|
wait(__mutex_rendezvous0);
|
signal(__mutex_rendezvous1);
|
signal(__mutex_rendezvous1);
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.