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