48 #define SEM_OFS1 20000
49 #define SEM_OFS2 21000
51 #define OS_WAIT_SEM(sem) do {\
52 if ( os_sem_larger_than_zero( sem ) ){\
53 os_sem_decrement( sem );\
56 os_task_wait_sem_set( running_tid, sem );\
57 OS_SCHEDULE(SEM_OFS1);\
62 #define OS_SIGNAL_SEM(sem) do {\
63 if ( os_task_waiting_this_semaphore( sem ) == 0 ) {\
64 os_sem_increment( sem );\
67 os_task_release_waiting_task( sem );\
68 OS_SCHEDULE(SEM_OFS2);\
73 #define OS_SIGNAL_SEM_NO_SCHEDULE(sem) do {\
74 if ( os_task_waiting_this_semaphore( sem ) == 0 ) {\
75 os_sem_increment( sem );\
78 os_task_release_waiting_task( sem );\
85 typedef uint8_t Sem_t;
87 void os_sem_init(
void);
88 uint8_t os_sem_larger_than_zero( Sem_t sem );
89 void os_sem_decrement( Sem_t sem );
90 void os_sem_increment( Sem_t sem );