68 #include <semaphore.h> 84 #ifndef HAVE_SEMAPHORE 88 semaphore = gw_malloc(
sizeof(*semaphore));
91 if (sem_init(&semaphore->sem, 0, (
unsigned int) n) != 0)
92 panic(errno,
"Could not initialize semaphore.");
106 if (semaphore != NULL) {
107 #ifdef HAVE_SEMAPHORE 108 if (sem_destroy(&semaphore->sem) != 0)
109 panic(errno,
"Destroying semaphore while some threads are waiting.");
120 #ifndef HAVE_SEMAPHORE 126 if (sem_post(&semaphore->sem) != 0)
127 error(errno,
"Value for semaphore is out of range.");
135 #ifdef HAVE_SEMAPHORE 136 sem_wait(&semaphore->sem);
146 #ifdef HAVE_SEMAPHORE 149 if (sem_getvalue(&semaphore->sem, &val) != 0)
150 panic(errno,
"Could not get semaphore value.");
void error(int err, const char *fmt,...)
long semaphore_getvalue(Semaphore *semaphore)
gw_assert(wtls_machine->packet_to_send !=NULL)
void semaphore_destroy(Semaphore *semaphore)
void gwlist_produce(List *list, void *item)
long gwlist_len(List *list)
void semaphore_down(Semaphore *semaphore)
void semaphore_up(Semaphore *semaphore)
void * gwlist_consume(List *list)
void gwlist_add_producer(List *list)
Semaphore * semaphore_create(long n)
void gwlist_destroy(List *list, gwlist_item_destructor_t *destructor)