Lines Matching refs:sem
41 void gomp_sem_init (gomp_sem_t *sem, int value)
45 ret = pthread_mutex_init (&sem->mutex, NULL);
49 ret = pthread_cond_init (&sem->cond, NULL);
53 sem->value = value;
56 void gomp_sem_wait (gomp_sem_t *sem)
60 ret = pthread_mutex_lock (&sem->mutex);
64 if (sem->value > 0)
66 sem->value--;
67 ret = pthread_mutex_unlock (&sem->mutex);
71 while (sem->value <= 0)
73 ret = pthread_cond_wait (&sem->cond, &sem->mutex);
76 pthread_mutex_unlock (&sem->mutex);
81 sem->value--;
82 ret = pthread_mutex_unlock (&sem->mutex);
86 void gomp_sem_post (gomp_sem_t *sem)
90 ret = pthread_mutex_lock (&sem->mutex);
94 sem->value++;
96 ret = pthread_mutex_unlock (&sem->mutex);
100 ret = pthread_cond_signal (&sem->cond);
105 void gomp_sem_destroy (gomp_sem_t *sem)
109 ret = pthread_mutex_destroy (&sem->mutex);
113 ret = pthread_cond_destroy (&sem->cond);
119 gomp_sem_wait (gomp_sem_t *sem)
123 while (sem_wait (sem) != 0)