19 #ifndef _COBALT_POSIX_MUTEX_H
20 #define _COBALT_POSIX_MUTEX_H
23 #include <cobalt/uapi/mutex.h>
24 #include <xenomai/posix/syscall.h>
28 struct xnsynch synchbase;
30 struct list_head link;
31 struct list_head conds;
32 struct cobalt_mutexattr attr;
33 struct cobalt_kqueues *owningq;
37 int __cobalt_mutex_timedlock_break(
struct cobalt_mutex_shadow __user *u_mx,
38 const void __user *u_ts,
39 int (*fetch_timeout)(
struct timespec *ts,
40 const void __user *u_ts));
42 int __cobalt_mutex_acquire_unchecked(
struct xnthread *cur,
43 struct cobalt_mutex *mutex,
44 const struct timespec *ts);
46 COBALT_SYSCALL_DECL(mutex_check_init,
47 (
struct cobalt_mutex_shadow __user *u_mx));
49 COBALT_SYSCALL_DECL(mutex_init,
50 (
struct cobalt_mutex_shadow __user *u_mx,
51 const struct cobalt_mutexattr __user *u_attr));
53 COBALT_SYSCALL_DECL(mutex_destroy,
54 (
struct cobalt_mutex_shadow __user *u_mx));
56 COBALT_SYSCALL_DECL(mutex_trylock,
57 (
struct cobalt_mutex_shadow __user *u_mx));
59 COBALT_SYSCALL_DECL(mutex_lock,
60 (
struct cobalt_mutex_shadow __user *u_mx));
62 COBALT_SYSCALL_DECL(mutex_timedlock,
63 (
struct cobalt_mutex_shadow __user *u_mx,
64 const struct timespec __user *u_ts));
66 COBALT_SYSCALL_DECL(mutex_unlock,
67 (
struct cobalt_mutex_shadow __user *u_mx));
69 int cobalt_mutex_release(
struct xnthread *cur,
70 struct cobalt_mutex *mutex);
72 void cobalt_mutexq_cleanup(
struct cobalt_kqueues *q);
74 void cobalt_mutex_pkg_init(
void);
76 void cobalt_mutex_pkg_cleanup(
void);