19 #ifndef _COBALT_POSIX_MUTEX_H
20 #define _COBALT_POSIX_MUTEX_H
23 #include <cobalt/uapi/mutex.h>
24 #include <xenomai/posix/syscall.h>
25 #include <xenomai/posix/process.h>
27 struct cobalt_process;
31 struct xnsynch synchbase;
33 struct list_head conds;
34 struct cobalt_mutexattr attr;
35 struct cobalt_resnode resnode;
38 int __cobalt_mutex_timedlock_break(
struct cobalt_mutex_shadow __user *u_mx,
39 const void __user *u_ts,
40 int (*fetch_timeout)(
struct timespec64 *ts,
41 const void __user *u_ts));
43 int __cobalt_mutex_acquire_unchecked(
struct xnthread *cur,
44 struct cobalt_mutex *mutex,
45 const struct timespec64 *ts);
47 COBALT_SYSCALL_DECL(mutex_check_init,
48 (
struct cobalt_mutex_shadow __user *u_mx));
50 COBALT_SYSCALL_DECL(mutex_init,
51 (
struct cobalt_mutex_shadow __user *u_mx,
52 const struct cobalt_mutexattr __user *u_attr));
54 COBALT_SYSCALL_DECL(mutex_destroy,
55 (
struct cobalt_mutex_shadow __user *u_mx));
57 COBALT_SYSCALL_DECL(mutex_trylock,
58 (
struct cobalt_mutex_shadow __user *u_mx));
60 COBALT_SYSCALL_DECL(mutex_lock,
61 (
struct cobalt_mutex_shadow __user *u_mx));
63 COBALT_SYSCALL_DECL(mutex_timedlock,
64 (
struct cobalt_mutex_shadow __user *u_mx,
65 const struct __kernel_old_timespec __user *u_ts));
67 COBALT_SYSCALL_DECL(mutex_timedlock64,
68 (
struct cobalt_mutex_shadow __user *u_mx,
69 const struct __kernel_timespec __user *u_ts));
71 COBALT_SYSCALL_DECL(mutex_unlock,
72 (
struct cobalt_mutex_shadow __user *u_mx));
74 int cobalt_mutex_release(
struct xnthread *cur,
75 struct cobalt_mutex *mutex);
77 void cobalt_mutex_reclaim(
struct cobalt_resnode *node,