ridhaOs/RidhaOs/Src/ridhaOsSemaphore.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();
}