LibXenon
Bare-metal Xbox 360 homebrew library
Loading...
Searching...
No Matches
lock.h
Go to the documentation of this file.
1#ifndef __SYS_LOCK_H__
2#define __SYS_LOCK_H__
3
4/* dummy lock routines for single-threaded aps */
5
6typedef int _LOCK_T;
7typedef int _LOCK_RECURSIVE_T;
8
9#define __LOCK_INIT(CLASS,NAME) CLASS _LOCK_T NAME = 0
10#define __LOCK_INIT_RECURSIVE(CLASS,NAME) CLASS _LOCK_RECURSIVE_T NAME = 0
11
12#define __lock_init(NAME) \
13 __libc_lock_init(&(NAME),0)
14
15#define __lock_init_recursive(NAME) \
16 __libc_lock_init(&(NAME),1)
17
18#define __lock_close(NAME) \
19 __libc_lock_close(&(NAME))
20
21#define __lock_close_recursive(NAME) \
22 __libc_lock_close(&(NAME))
23
24#define __lock_acquire(NAME) \
25 if(!(NAME)) __libc_lock_init(&(NAME),0); \
26 __libc_lock_acquire(&(NAME))
27
28#define __lock_acquire_recursive(NAME) \
29 if(!(NAME)) __libc_lock_init(&(NAME),1); \
30 __libc_lock_acquire(&(NAME))
31
32#define __lock_try_acquire(NAME) \
33 if(!(NAME)) __libc_lock_init(&(NAME),0); \
34 __libc_lock_try_acquire(&(NAME))
35
36#define __lock_try_acquire_recursive(NAME) \
37 if(!(NAME)) __libc_lock_init(&(NAME),1); \
38 __libc_lock_try_acquire(&(NAME))
39
40#define __lock_release(NAME) \
41 __libc_lock_release(&(NAME))
42
43#define __lock_release_recursive(NAME) \
44 __libc_lock_release(&(NAME))
45
46
47extern int __libc_lock_init(int*,int);
48extern int __libc_lock_close(int*);
49extern int __libc_lock_acquire(int*);
50extern int __libc_lock_try_acquire(int*);
51extern int __libc_lock_release(int*);
52
53#endif /* __SYS_LOCK_H__ */
int __libc_lock_acquire(int *)
Definition: newlib.c:93
int __libc_lock_close(int *)
Definition: newlib.c:75
int __libc_lock_release(int *)
Definition: newlib.c:84
int _LOCK_T
Definition: lock.h:6
int __libc_lock_init(int *, int)
Definition: newlib.c:66
int __libc_lock_try_acquire(int *)
int _LOCK_RECURSIVE_T
Definition: lock.h:7