Rev 1693 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1693 | serge | 1 | #ifndef __SYS_LOCK_H__ |
2 | #define __SYS_LOCK_H__ |
||
3 | |||
4 | #define _LIBC 1 |
||
5 | #define NOT_IN_libc 1 |
||
6 | |||
7 | #ifndef __USE_GNU |
||
8 | #define __USE_GNU 1 |
||
9 | #endif |
||
10 | |||
11 | void __mutex_lock(volatile int *val); |
||
12 | |||
13 | typedef volatile int __libc_lock_t; |
||
14 | typedef struct { volatile int mutex; } __libc_lock_recursive_t; |
||
15 | |||
16 | #define __libc_lock_define(CLASS,NAME) \ |
||
17 | CLASS __libc_lock_t NAME; |
||
18 | #define __libc_rwlock_define(CLASS,NAME) \ |
||
19 | CLASS __libc_rwlock_t NAME; |
||
20 | #define __libc_lock_define_recursive(CLASS,NAME) \ |
||
21 | CLASS __libc_lock_recursive_t NAME; |
||
22 | #define __rtld_lock_define_recursive(CLASS,NAME) \ |
||
23 | CLASS __rtld_lock_recursive_t NAME; |
||
24 | |||
25 | typedef __libc_lock_t _LOCK_T; |
||
26 | typedef __libc_lock_recursive_t _LOCK_RECURSIVE_T; |
||
27 | |||
28 | #define __LOCK_INIT(class,lock) \ |
||
29 | __libc_lock_define_initialized(class, lock) |
||
1906 | serge | 30 | |
1693 | serge | 31 | #define __LOCK_INIT_RECURSIVE(class, lock) \ |
32 | __libc_lock_define_initialized_recursive(class, lock) |
||
33 | |||
1906 | serge | 34 | #define __libc_lock_define_initialized(CLASS,NAME) \ |
35 | CLASS __libc_lock_t NAME; |
||
36 | |||
1693 | serge | 37 | #define __libc_lock_define_initialized_recursive(CLASS,NAME) \ |
38 | CLASS __libc_lock_recursive_t NAME = _LIBC_LOCK_RECURSIVE_INITIALIZER; |
||
39 | |||
40 | #define _LIBC_LOCK_RECURSIVE_INITIALIZER {0} |
||
41 | |||
42 | #define __lock_init(__lock) __libc_lock_init(__lock) |
||
43 | #define __lock_init_recursive(__lock) __libc_lock_init_recursive(__lock) |
||
44 | #define __lock_acquire(__lock) __libc_lock_lock(__lock) |
||
45 | #define __lock_acquire_recursive(__lock) __libc_lock_lock_recursive(__lock) |
||
46 | #define __lock_release(__lock) __libc_lock_unlock(__lock) |
||
47 | #define __lock_release_recursive(__lock) __libc_lock_unlock_recursive(__lock) |
||
48 | #define __lock_try_acquire(__lock) __libc_lock_trylock(__lock) |
||
49 | #define __lock_try_acquire_recursive(__lock) \ |
||
50 | __libc_lock_trylock_recursive(__lock) |
||
51 | #define __lock_close(__lock) __libc_lock_fini(__lock) |
||
52 | #define __lock_close_recursive(__lock) __libc_lock_fini_recursive(__lock) |
||
53 | |||
54 | |||
55 | #define __libc_lock_init_recursive(NAME) ((NAME).mutex=0) |
||
56 | #define __libc_lock_fini(NAME) |
||
57 | |||
58 | #define __libc_lock_fini_recursive(NAME) __libc_lock_fini ((NAME).mutex) |
||
59 | |||
60 | |||
61 | #define __libc_lock_lock(NAME) __mutex_lock (&(NAME)) |
||
62 | |||
63 | /* Lock the recursive named lock variable. */ |
||
64 | #define __libc_lock_lock_recursive(NAME) __libc_lock_lock ((NAME).mutex) |
||
65 | |||
66 | #define __libc_lock_unlock(NAME) ((NAME)=0) |
||
67 | #define __libc_lock_unlock_recursive(NAME) __libc_lock_unlock ((NAME).mutex) |
||
68 | |||
69 | #endif /* __SYS_LOCK_H__ */ |