semaphore.h #ifndef _SEMAPHORE_H #define _SEMAPHORE_H #include #include typedef struct semaphore{ pthread_mutex_t lock; pthread_cond_t signal; int value; } semaphore_t; semaphore_t * initialize(int value); void prolaag(semaphore_t *sem, pthread_mutex_t *waitLock); void verhoog(semaphore_t *sem); #endif semaphore.c #include "semaphore.h" semaphore_t * initialize(int value){ semaphore_t *temp; temp = (semaphore_t*)malloc(sizeof(semaphore_t)); temp->lock = PTHREAD_MUTEX_INITIALIZER; temp->signal = PTHREAD_COND_INITIALIZER; temp->value = value; return temp; } void prolaag(semaphore_t *sem, pthread_mutex_t *waitLock){ if (pthread_mutex_lock(&sem->lock)) exit(0); // exits if mutex fails sem->value= sem->value - 1; if (sem->value < 0){ pthread_mutex_unlock(&sem->lock); pthread_mutex_unlock(waitLock); pthread_cond_wait(&sem->signal, &sem->lock); } pthread_mutex_unlock(&sem->lock); } void verhoog(semaphore_t *sem){ if (pthread_mutex_lock(&sem->lock)) exit(0); // exits if mutex fails sem->value = sem->value + 1; if(sem->value <= 0) pthread_cond_signal(&sem->signal); pthread_mutex_unlock(&sem->lock); } error lest0039@lind24-12 (~/csci5103/posix) % make gcc -g -Wall -c -o semaphore.o semaphore.c semaphore.c: In function ‘initialize’: semaphore.c:9: error: syntax error before ‘{’ token semaphore.c:9: warning: control reaches end of non-void function semaphore.c: At top level: semaphore.c:10: error: syntax error before ‘->’ token semaphore.c:11: error: syntax error before ‘->’ token make: *** [semaphore.o] Error 1 lest0039@lind24-12 (~/csci5103/posix) %