Lines Matching defs:semaphore

7 #include <semaphore.h>
52 // get the mode and semaphore count parameters, if O_CREAT is specified
68 // call of this process to open the semaphore. If it is, we will keep the
79 // ask the kernel to open the semaphore
96 sem_close(sem_t* semaphore)
99 status_t error = _kern_realtime_sem_close(semaphore->u.named_sem_id,
116 sem_init(sem_t* semaphore, int shared, unsigned value)
118 semaphore->type = shared ? SEM_TYPE_UNNAMED_SHARED : SEM_TYPE_UNNAMED;
119 semaphore->u.unnamed_sem = value;
125 sem_destroy(sem_t* semaphore)
127 if (semaphore->type != SEM_TYPE_UNNAMED && semaphore->type != SEM_TYPE_UNNAMED_SHARED)
135 unnamed_sem_post(sem_t* semaphore)
137 int32* sem = (int32*)&semaphore->u.unnamed_sem;
143 if (semaphore->type == SEM_TYPE_UNNAMED_SHARED)
151 unnamed_sem_trywait(sem_t* semaphore)
153 int32* sem = (int32*)&semaphore->u.unnamed_sem;
163 unnamed_sem_timedwait(sem_t* semaphore, clockid_t clock_id,
166 int32* sem = (int32*)&semaphore->u.unnamed_sem;
170 if (semaphore->type == SEM_TYPE_UNNAMED_SHARED)
187 int result = unnamed_sem_trywait(semaphore);
196 sem_post(sem_t* semaphore)
199 if (semaphore->type == SEM_TYPE_NAMED)
200 error = _kern_realtime_sem_post(semaphore->u.named_sem_id);
202 error = unnamed_sem_post(semaphore);
209 named_sem_timedwait(sem_t* semaphore, clockid_t clock_id,
214 status_t err = _kern_realtime_sem_wait(semaphore->u.named_sem_id,
238 status_t err = _kern_realtime_sem_wait(semaphore->u.named_sem_id, flags,
248 sem_trywait(sem_t* semaphore)
251 if (semaphore->type == SEM_TYPE_NAMED) {
252 error = _kern_realtime_sem_wait(semaphore->u.named_sem_id,
255 error = unnamed_sem_trywait(semaphore);
262 sem_wait(sem_t* semaphore)
265 if (semaphore->type == SEM_TYPE_NAMED)
266 error = named_sem_timedwait(semaphore, CLOCK_REALTIME, NULL);
268 error = unnamed_sem_timedwait(semaphore, CLOCK_REALTIME, NULL);
275 sem_clockwait(sem_t* semaphore, clockid_t clock_id, const struct timespec* abstime)
278 if (semaphore->type == SEM_TYPE_NAMED)
279 error = named_sem_timedwait(semaphore, clock_id, abstime);
281 error = unnamed_sem_timedwait(semaphore, clock_id, abstime);
288 sem_timedwait(sem_t* semaphore, const struct timespec* abstime)
290 return sem_clockwait(semaphore, CLOCK_REALTIME, abstime);
295 sem_getvalue(sem_t* semaphore, int* value)
297 if (semaphore->type == SEM_TYPE_NAMED) {
299 semaphore->u.named_sem_id, value));
301 *value = semaphore->u.unnamed_sem < 0 ? 0 : semaphore->u.unnamed_sem;