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);
79 void __cobalt_sem_shadow_init(
struct cobalt_sem *sem, __u32 magic,
80 struct cobalt_sem_shadow *sm);
83 (
struct cobalt_sem_shadow __user *u_sem,
84 int flags,
unsigned value));
87 (
struct cobalt_sem_shadow __user *u_sem));
90 (
struct cobalt_sem_shadow __user *u_sem));
93 (
struct cobalt_sem_shadow __user *u_sem,
94 struct timespec __user *u_ts));
97 (
struct cobalt_sem_shadow __user *u_sem));
99 COBALT_SYSCALL_DECL(sem_getvalue,
100 (
struct cobalt_sem_shadow __user *u_sem,
101 int __user *u_sval));
104 (
struct cobalt_sem_shadow __user *u_sem));
106 COBALT_SYSCALL_DECL(sem_open,
107 (
struct cobalt_sem_shadow __user *__user *u_addrp,
108 const char __user *u_name,
109 int oflags, mode_t mode,
unsigned int value));
112 (
struct cobalt_sem_shadow __user *usm));
114 COBALT_SYSCALL_DECL(
sem_unlink, (
const char __user *u_name));
116 COBALT_SYSCALL_DECL(sem_broadcast_np,
117 (
struct cobalt_sem_shadow __user *u_sem));
119 COBALT_SYSCALL_DECL(sem_inquire,
120 (
struct cobalt_sem_shadow __user *u_sem,
121 struct cobalt_sem_info __user *u_info,
122 pid_t __user *u_waitlist,
125 void cobalt_sem_reclaim(
struct cobalt_resnode *node,
int sem_wait(sem_t *sem)
Decrement a semaphore
Definition: semaphore.c:315
int sem_trywait(sem_t *sem)
Attempt to decrement a semaphore
Definition: semaphore.c:251
int sem_unlink(const char *name)
Unlink a named semaphore
Definition: semaphore.c:605
int sem_close(sem_t *sem)
Close a named semaphore
Definition: semaphore.c:557
int sem_destroy(sem_t *sem)
Destroy an unnamed semaphore
Definition: semaphore.c:141
int sem_init(sem_t *sem, int pshared, unsigned int value)
Initialize an unnamed semaphore.
Definition: semaphore.c:88
int sem_post(sem_t *sem)
Post a semaphore
Definition: semaphore.c:188
int sem_timedwait(sem_t *sem, const struct timespec *abs_timeout)
Attempt to decrement a semaphore with a time limit
Definition: semaphore.c:371