25 lines
437 B
C
25 lines
437 B
C
#include "ridhaOsSemaphore.h"
|
|
|
|
void ridhaOsSemaphoreInit(int32_t *semaphore, int32_t value)
|
|
{
|
|
*semaphore = value;
|
|
}
|
|
|
|
void ridhaOsSemaphoreSet(int32_t * semaphore)
|
|
{
|
|
__disable_irq();
|
|
*semaphore += 1;
|
|
__enable_irq();
|
|
}
|
|
|
|
void ridhaOsSemaphoreWait(int32_t * semaphore)
|
|
{
|
|
__disable_irq();
|
|
while (*semaphore <= 0)
|
|
{
|
|
__disable_irq();
|
|
__enable_irq();
|
|
}
|
|
*semaphore -= 1;
|
|
__enable_irq();
|
|
} |