xref: /nrf52832-nimble/rt-thread/components/libc/pthreads/semaphore.h (revision 104654410c56c573564690304ae786df310c91fc)
1*10465441SEvalZero /*
2*10465441SEvalZero  * Copyright (c) 2006-2018, RT-Thread Development Team
3*10465441SEvalZero  *
4*10465441SEvalZero  * SPDX-License-Identifier: Apache-2.0
5*10465441SEvalZero  *
6*10465441SEvalZero  * Change Logs:
7*10465441SEvalZero  * Date           Author       Notes
8*10465441SEvalZero  * 2010-10-26     Bernard      the first version
9*10465441SEvalZero  */
10*10465441SEvalZero 
11*10465441SEvalZero #ifndef __POSIX_SEMAPHORE_H__
12*10465441SEvalZero #define __POSIX_SEMAPHORE_H__
13*10465441SEvalZero 
14*10465441SEvalZero #include <rtthread.h>
15*10465441SEvalZero #include <pthread.h>
16*10465441SEvalZero 
17*10465441SEvalZero struct posix_sem
18*10465441SEvalZero {
19*10465441SEvalZero     /* reference count and unlinked */
20*10465441SEvalZero     rt_uint16_t refcount;
21*10465441SEvalZero     rt_uint8_t unlinked;
22*10465441SEvalZero     rt_uint8_t unamed;
23*10465441SEvalZero 
24*10465441SEvalZero     /* RT-Thread semaphore */
25*10465441SEvalZero     rt_sem_t sem;
26*10465441SEvalZero 
27*10465441SEvalZero     /* next posix semaphore */
28*10465441SEvalZero     struct posix_sem* next;
29*10465441SEvalZero };
30*10465441SEvalZero typedef struct posix_sem sem_t;
31*10465441SEvalZero 
32*10465441SEvalZero int sem_close(sem_t *sem);
33*10465441SEvalZero int sem_destroy(sem_t *sem);
34*10465441SEvalZero int sem_getvalue(sem_t *sem, int *sval);
35*10465441SEvalZero int sem_init(sem_t *sem, int pshared, unsigned int value);
36*10465441SEvalZero sem_t *sem_open(const char *name, int oflag, ...);
37*10465441SEvalZero int sem_post(sem_t *sem);
38*10465441SEvalZero int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout);
39*10465441SEvalZero int sem_trywait(sem_t *sem);
40*10465441SEvalZero int sem_unlink(const char *name);
41*10465441SEvalZero int sem_wait(sem_t *sem);
42*10465441SEvalZero 
43*10465441SEvalZero #endif
44