Lines Matching refs:sem

75 	sem_t *sem;  member
113 sem_check_validity(sem_t *sem) in sem_check_validity() argument
116 if (sem->_magic == SEM_MAGIC) in sem_check_validity()
123 _sem_init(sem_t *sem, int pshared, unsigned int value) in _sem_init() argument
131 bzero(sem, sizeof(sem_t)); in _sem_init()
132 sem->_magic = SEM_MAGIC; in _sem_init()
133 sem->_kern._count = (u_int32_t)value; in _sem_init()
134 sem->_kern._flags = pshared ? USYNC_PROCESS_SHARED : 0; in _sem_init()
145 sem_t *sem, tmp; in _sem_open() local
149 sem = NULL; in _sem_open()
193 sem = ni->sem; in _sem_open()
196 return (sem); in _sem_open()
223 sem = mmap(NULL, sizeof(sem_t), PROT_READ | PROT_WRITE, in _sem_open()
225 if (sem == MAP_FAILED) { in _sem_open()
226 sem = NULL; in _sem_open()
231 if (sem->_magic != SEM_MAGIC) { in _sem_open()
236 ni->sem = sem; in _sem_open()
242 return (sem); in _sem_open()
248 if (sem != NULL) in _sem_open()
249 munmap(sem, sizeof(sem_t)); in _sem_open()
257 _sem_close(sem_t *sem) in _sem_close() argument
262 if (sem_check_validity(sem) != 0) in _sem_close()
265 if (!(sem->_kern._flags & SEM_NAMED)) { in _sem_close()
274 if (sem == ni->sem) { in _sem_close()
280 munmap(sem, sizeof(*sem)); in _sem_close()
311 _sem_destroy(sem_t *sem) in _sem_destroy() argument
314 if (sem_check_validity(sem) != 0) in _sem_destroy()
317 if (sem->_kern._flags & SEM_NAMED) { in _sem_destroy()
321 sem->_magic = 0; in _sem_destroy()
326 _sem_getvalue(sem_t * __restrict sem, int * __restrict sval) in _sem_getvalue() argument
329 if (sem_check_validity(sem) != 0) in _sem_getvalue()
332 *sval = (int)USEM_COUNT(sem->_kern._count); in _sem_getvalue()
337 usem_wake(struct _usem2 *sem) in usem_wake() argument
340 return (_umtx_op(sem, UMTX_OP_SEM2_WAKE, 0, NULL, NULL)); in usem_wake()
344 usem_wait(struct _usem2 *sem, clockid_t clock_id, int flags, in usem_wait() argument
365 retval = _umtx_op(sem, UMTX_OP_SEM2_WAIT, 0, (void *)tm_size, tm_p); in usem_wait()
375 _sem_trywait(sem_t *sem) in _sem_trywait() argument
379 if (sem_check_validity(sem) != 0) in _sem_trywait()
382 while (USEM_COUNT(val = sem->_kern._count) > 0) { in _sem_trywait()
383 if (atomic_cmpset_acq_int(&sem->_kern._count, val, val - 1)) in _sem_trywait()
391 _sem_clockwait_np(sem_t * __restrict sem, clockid_t clock_id, int flags, in _sem_clockwait_np() argument
396 if (sem_check_validity(sem) != 0) in _sem_clockwait_np()
402 while (USEM_COUNT(val = sem->_kern._count) > 0) { in _sem_clockwait_np()
403 if (atomic_cmpset_acq_int(&sem->_kern._count, val, in _sem_clockwait_np()
424 retval = usem_wait(&sem->_kern, clock_id, flags, rqtp, rmtp); in _sem_clockwait_np()
431 _sem_timedwait(sem_t * __restrict sem, in _sem_timedwait() argument
435 return (_sem_clockwait_np(sem, CLOCK_REALTIME, TIMER_ABSTIME, abstime, in _sem_timedwait()
440 _sem_wait(sem_t *sem) in _sem_wait() argument
443 return (_sem_timedwait(sem, NULL)); in _sem_wait()
453 _sem_post(sem_t *sem) in _sem_post() argument
457 if (sem_check_validity(sem) != 0) in _sem_post()
461 count = sem->_kern._count; in _sem_post()
466 } while (!atomic_cmpset_rel_int(&sem->_kern._count, count, count + 1)); in _sem_post()
468 usem_wake(&sem->_kern); in _sem_post()