18 #ifndef _COBALT_POSIX_SEM_H 19 #define _COBALT_POSIX_SEM_H 21 #include <linux/kernel.h> 22 #include <linux/fcntl.h> 23 #include <cobalt/kernel/thread.h> 24 #include <cobalt/kernel/registry.h> 25 #include <xenomai/posix/syscall.h> 26 #include <xenomai/posix/process.h> 28 struct cobalt_process;
33 struct xnsynch synchbase;
34 struct cobalt_sem_state *state;
37 struct filename *pathname;
38 struct cobalt_resnode resnode;
50 struct _sem_fastlock __sem_lock;
55 #include <cobalt/uapi/sem.h> 57 #define SEM_VALUE_MAX (INT_MAX) 58 #define SEM_FAILED NULL 59 #define SEM_NAMED 0x80000000 61 struct cobalt_sem_shadow __user *
62 __cobalt_sem_open(
struct cobalt_sem_shadow __user *usm,
63 const char __user *u_name,
64 int oflags, mode_t mode,
unsigned int value);
66 int __cobalt_sem_timedwait(
struct cobalt_sem_shadow __user *u_sem,
67 const void __user *u_ts,
68 int (*fetch_timeout)(
struct timespec *ts,
69 const void __user *u_ts));
71 int __cobalt_sem_destroy(xnhandle_t handle);
73 void cobalt_nsem_reclaim(
struct cobalt_process *process);
76 __cobalt_sem_init(
const char *name,
struct cobalt_sem_shadow *sem,
77 int flags,
unsigned value);
80 (
struct cobalt_sem_shadow __user *u_sem,
81 int flags,
unsigned value));
84 (
struct cobalt_sem_shadow __user *u_sem));
87 (
struct cobalt_sem_shadow __user *u_sem));
90 (
struct cobalt_sem_shadow __user *u_sem,
91 struct timespec __user *u_ts));
94 (
struct cobalt_sem_shadow __user *u_sem));
96 COBALT_SYSCALL_DECL(sem_getvalue,
97 (
struct cobalt_sem_shadow __user *u_sem,
101 (
struct cobalt_sem_shadow __user *u_sem));
103 COBALT_SYSCALL_DECL(sem_open,
104 (
struct cobalt_sem_shadow __user *__user *u_addrp,
105 const char __user *u_name,
106 int oflags, mode_t mode,
unsigned int value));
109 (
struct cobalt_sem_shadow __user *usm));
111 COBALT_SYSCALL_DECL(
sem_unlink, (
const char __user *u_name));
113 COBALT_SYSCALL_DECL(sem_broadcast_np,
114 (
struct cobalt_sem_shadow __user *u_sem));
116 COBALT_SYSCALL_DECL(sem_inquire,
117 (
struct cobalt_sem_shadow __user *u_sem,
118 struct cobalt_sem_info __user *u_info,
119 pid_t __user *u_waitlist,
122 void cobalt_sem_reclaim(
struct cobalt_resnode *node,
int sem_wait(sem_t *sem)
Decrement a semaphore.
Definition: semaphore.c:310
int sem_trywait(sem_t *sem)
Attempt to decrement a semaphore.
Definition: semaphore.c:247
int sem_unlink(const char *name)
Unlink a named semaphore.
Definition: semaphore.c:595
int sem_close(sem_t *sem)
Close a named semaphore.
Definition: semaphore.c:548
int sem_destroy(sem_t *sem)
Destroy an unnamed semaphore.
Definition: semaphore.c:139
int sem_init(sem_t *sem, int pshared, unsigned int value)
Initialize an unnamed semaphore.
Definition: semaphore.c:87
int sem_post(sem_t *sem)
Post a semaphore.
Definition: semaphore.c:185
int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout)
Attempt to decrement a semaphore with a time limit.
Definition: semaphore.c:365