12#define SYS_MUTEX_PROTOCOL_FIFO 1
14#define SYS_MUTEX_PROTOCOL_PRIO 2
16#define SYS_MUTEX_PROTOCOL_PRIO_INHERIT 3
19#define SYS_MUTEX_ATTR_RECURSIVE 0x0010
21#define SYS_MUTEX_ATTR_NOT_RECURSIVE 0x0020
24#define SYS_MUTEX_ATTR_NOT_PSHARED 0x0200
27#define SYS_MUTEX_ATTR_ADAPTIVE 0x1000
29#define SYS_MUTEX_ATTR_NOT_ADAPTIVE 0x2000
72#define sysMutexAttrInitialize(x) \
74 x.attr_protocol = SYS_MUTEX_PROTOCOL_PRIO; \
75 x.attr_recursive = SYS_MUTEX_ATTR_NOT_RECURSIVE; \
76 x.attr_pshared = SYS_MUTEX_ATTR_NOT_PSHARED; \
77 x.attr_adaptive = SYS_MUTEX_ATTR_NOT_ADAPTIVE; \
90 lv2syscall2(100,(u64)mutex,(u64)attr);
91 return_to_user_prog(s32);
100 lv2syscall1(101,mutex);
101 return_to_user_prog(s32);
112 lv2syscall2(102,mutex,timeout_usec);
113 return_to_user_prog(s32);
123 lv2syscall1(103,mutex);
124 return_to_user_prog(s32);
133 lv2syscall1(104,mutex);
134 return_to_user_prog(s32);
Lightweight mutex library.
Mutex attributes data structure.
u32 _pad
Unused padding element.
u32 attr_pshared
Sharing policy (only known value for it is SYS_MUTEX_ATTR_PSHARED)
u32 attr_protocol
Scheduling policy.
u32 attr_adaptive
Adaptive setting.
u32 attr_recursive
Recursive setting.
LV2_SYSCALL sysMutexDestroy(sys_mutex_t mutex)
Destroy a mutex.
LV2_SYSCALL sysMutexUnlock(sys_mutex_t mutex)
Unlock a previously locked mutex.
LV2_SYSCALL sysMutexLock(sys_mutex_t mutex, u64 timeout_usec)
Lock a mutex.
LV2_SYSCALL sysMutexTryLock(sys_mutex_t mutex)
Try to lock a mutex (non-blocking).
struct sys_mutex_attr sys_mutex_attr_t
Mutex attributes data structure.
LV2_SYSCALL sysMutexCreate(sys_mutex_t *mutex, const sys_mutex_attr_t *attr)
Create a mutex.