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