scheduler.c

Basic task scheduling library
git clone git://git.finwo.net/lib/scheduler.c
Log | Files | Refs | README | LICENSE

sched-sem.h (484B)


      1 #ifndef __FINWO_SCHEDULER_SEM_H__
      2 #define __FINWO_SCHEDULER_SEM_H__
      3 
      4 struct sched_sem {
      5   int value;
      6 };
      7 
      8 void sched_sem_init(struct sched_sem *sem, int amount);
      9 void sched_sem_signal(struct sched_sem *sem, int amount);
     10 void sched_sem_consume(struct sched_sem *sem, int amount);
     11 
     12 #define sched_sem_wait(sem)                      \
     13   do {                                           \
     14     if ((sem)->value <= 0) return SCHED_RUNNING; \
     15   } while (0)
     16 
     17 #endif  // __FINWO_SCHEDULER_SEM_H__