psl1ght
A free SDK for Sony's PS3 console
Loading...
Searching...
No Matches
mutex.h
Go to the documentation of this file.
1
5#ifndef __SYS_MUTEX_H__
6#define __SYS_MUTEX_H__
7
8#include <ppu-lv2.h>
9#include <lv2/mutex.h>
10
12#define SYS_MUTEX_PROTOCOL_FIFO 1
14#define SYS_MUTEX_PROTOCOL_PRIO 2
16#define SYS_MUTEX_PROTOCOL_PRIO_INHERIT 3
17
19#define SYS_MUTEX_ATTR_RECURSIVE 0x0010
21#define SYS_MUTEX_ATTR_NOT_RECURSIVE 0x0020
22
24#define SYS_MUTEX_ATTR_NOT_PSHARED 0x0200
25
27#define SYS_MUTEX_ATTR_ADAPTIVE 0x1000
29#define SYS_MUTEX_ATTR_NOT_ADAPTIVE 0x2000
30
31#ifdef __cplusplus
32 extern "C" {
33#endif
34
71
72#define sysMutexAttrInitialize(x) \
73 do{ \
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; \
78 x.key = 0; \
79 x.flags = 0; \
80 x.name[0] = '\0'; \
81 }while(0)
82
88LV2_SYSCALL sysMutexCreate(sys_mutex_t *mutex,const sys_mutex_attr_t *attr)
89{
90 lv2syscall2(100,(u64)mutex,(u64)attr);
91 return_to_user_prog(s32);
92}
93
98LV2_SYSCALL sysMutexDestroy(sys_mutex_t mutex)
99{
100 lv2syscall1(101,mutex);
101 return_to_user_prog(s32);
102}
103
110LV2_SYSCALL sysMutexLock(sys_mutex_t mutex,u64 timeout_usec)
111{
112 lv2syscall2(102,mutex,timeout_usec);
113 return_to_user_prog(s32);
114}
115
121LV2_SYSCALL sysMutexTryLock(sys_mutex_t mutex)
122{
123 lv2syscall1(103,mutex);
124 return_to_user_prog(s32);
125}
126
131LV2_SYSCALL sysMutexUnlock(sys_mutex_t mutex)
132{
133 lv2syscall1(104,mutex);
134 return_to_user_prog(s32);
135}
136
137#ifdef __cplusplus
138 }
139#endif
140
141#endif
Lightweight mutex library.
Mutex attributes data structure.
Definition mutex.h:37
s32 flags
Mutex flags.
Definition mutex.h:65
char name[8]
Mutex name.
Definition mutex.h:69
u32 _pad
Unused padding element.
Definition mutex.h:67
u32 attr_pshared
Sharing policy (only known value for it is SYS_MUTEX_ATTR_PSHARED)
Definition mutex.h:54
u32 attr_protocol
Scheduling policy.
Definition mutex.h:45
u32 attr_adaptive
Adaptive setting.
Definition mutex.h:61
u32 attr_recursive
Recursive setting.
Definition mutex.h:52
u64 key
Mutex key.
Definition mutex.h:63
LV2_SYSCALL sysMutexDestroy(sys_mutex_t mutex)
Destroy a mutex.
Definition mutex.h:98
LV2_SYSCALL sysMutexUnlock(sys_mutex_t mutex)
Unlock a previously locked mutex.
Definition mutex.h:131
LV2_SYSCALL sysMutexLock(sys_mutex_t mutex, u64 timeout_usec)
Lock a mutex.
Definition mutex.h:110
LV2_SYSCALL sysMutexTryLock(sys_mutex_t mutex)
Try to lock a mutex (non-blocking).
Definition mutex.h:121
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.
Definition mutex.h:88