add finish printfs
[IRC.git] / Robust / src / Runtime / psemaphore.c
index 64cdda50ca68bb49d53f8500c227580a241c17d5..63bdfe07c7e866633fcb7ef9342537d29339ff61 100644 (file)
@@ -3,51 +3,47 @@
 #include "psemaphore.h"
 
 
-void psem_init( psemaphore* sem ) {
-  pthread_mutex_init( &(sem->lock), NULL );
-  pthread_cond_init ( &(sem->cond), NULL );
+void psem_init(psemaphore* sem) {
+  pthread_mutex_init(&(sem->lock), NULL);
+  pthread_cond_init(&(sem->cond), NULL);
   sem->signaled = 0;
   sem->tag = 0;
 }
 
 
-void psem_take( psemaphore* sem, struct garbagelist* gl ) {
-  pthread_mutex_lock( &(sem->lock) );
+void psem_take(psemaphore* sem, struct garbagelist* gl) {
+  pthread_mutex_lock(&(sem->lock) );
   if( !sem->signaled ) {
-    stopforgc( gl );
+    stopforgc(gl);
     do {
-      pthread_cond_wait( &(sem->cond), &(sem->lock) );
+      pthread_cond_wait(&(sem->cond), &(sem->lock) );
     } while( !sem->signaled );
     restartaftergc();
   }
-  pthread_mutex_unlock( &(sem->lock) );
+  pthread_mutex_unlock(&(sem->lock) );
 }
 
 
-void psem_give( psemaphore* sem) {
-  pthread_mutex_lock  ( &(sem->lock) );
+void psem_give(psemaphore* sem) {
+  pthread_mutex_lock(&(sem->lock) );
   sem->signaled = 1;
-  pthread_cond_signal ( &(sem->cond) );
-  pthread_mutex_unlock( &(sem->lock) );
+  pthread_cond_signal(&(sem->cond) );
+  pthread_mutex_unlock(&(sem->lock) );
 }
 
-void psem_give_tag( psemaphore* sem, int tag) {
-  pthread_mutex_lock  ( &(sem->lock) );
+void psem_give_tag(psemaphore* sem, int tag) {
+  pthread_mutex_lock(&(sem->lock) );
   if (sem->tag==tag) {
     sem->signaled = 1;
-    pthread_cond_signal ( &(sem->cond) );
+    pthread_cond_signal(&(sem->cond) );
   }
-  pthread_mutex_unlock( &(sem->lock) );
+  pthread_mutex_unlock(&(sem->lock) );
 }
 
 
-void psem_reset( psemaphore* sem ) {
-  // this should NEVER BE CALLED if it is possible
-  // the semaphore is still in use, NEVER
-  if( pthread_mutex_trylock( &(sem->lock) ) == EBUSY ) {
-    exit( -1 );
-  }
-  pthread_mutex_unlock( &(sem->lock) );
+void psem_reset(psemaphore* sem) {
+  pthread_mutex_lock(&(sem->lock) );
   sem->tag++;
   sem->signaled = 0;
+  pthread_mutex_unlock(&(sem->lock) );
 }