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)