00001 #ifndef __si_sys_h_pthrdsem_h__5c15a1dd_1951_4cc8_948b_b91cd51e709b 00002 #define __si_sys_h_pthrdsem_h__5c15a1dd_1951_4cc8_948b_b91cd51e709b 00003 00013 #include <pthread.h> 00014 #include <si_sys/defs.h> 00015 00026 typedef struct sc_sem { 00027 pthread_mutex_t m; 00028 pthread_cond_t c; 00029 s_int32 count; 00030 s_int32 max; 00031 } sc_sem; 00032 00033 sc_status sc_sem_construct(sc_sem* s, s_int32 initialCount, s_int32 maxCount); 00042 sc_status sc_sem_wait(sc_sem* s); 00049 sc_status sc_sem_trywait(sc_sem* s, s_bool* gotit); 00059 sc_status sc_sem_post(sc_sem* s); 00066 sc_status sc_sem_destruct(sc_sem* s); 00070 #endif