Go to most recent revision | Details | 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) |
||
30 | #define __LOCK_INIT_RECURSIVE(class, lock) \ |
||
31 | __libc_lock_define_initialized_recursive(class, lock) |
||
32 | |||
33 | #define __libc_lock_define_initialized_recursive(CLASS,NAME) \ |
||
34 | CLASS __libc_lock_recursive_t NAME = _LIBC_LOCK_RECURSIVE_INITIALIZER; |
||
35 | |||
36 | #define _LIBC_LOCK_RECURSIVE_INITIALIZER {0} |
||
37 | |||
38 | #define __lock_init(__lock) __libc_lock_init(__lock) |
||
39 | #define __lock_init_recursive(__lock) __libc_lock_init_recursive(__lock) |
||
40 | #define __lock_acquire(__lock) __libc_lock_lock(__lock) |
||
41 | #define __lock_acquire_recursive(__lock) __libc_lock_lock_recursive(__lock) |
||
42 | #define __lock_release(__lock) __libc_lock_unlock(__lock) |
||
43 | #define __lock_release_recursive(__lock) __libc_lock_unlock_recursive(__lock) |
||
44 | #define __lock_try_acquire(__lock) __libc_lock_trylock(__lock) |
||
45 | #define __lock_try_acquire_recursive(__lock) \ |
||
46 | __libc_lock_trylock_recursive(__lock) |
||
47 | #define __lock_close(__lock) __libc_lock_fini(__lock) |
||
48 | #define __lock_close_recursive(__lock) __libc_lock_fini_recursive(__lock) |
||
49 | |||
50 | |||
51 | #define __libc_lock_init_recursive(NAME) ((NAME).mutex=0) |
||
52 | #define __libc_lock_fini(NAME) |
||
53 | |||
54 | #define __libc_lock_fini_recursive(NAME) __libc_lock_fini ((NAME).mutex) |
||
55 | |||
56 | |||
57 | #define __libc_lock_lock(NAME) __mutex_lock (&(NAME)) |
||
58 | |||
59 | /* Lock the recursive named lock variable. */ |
||
60 | #define __libc_lock_lock_recursive(NAME) __libc_lock_lock ((NAME).mutex) |
||
61 | |||
62 | #define __libc_lock_unlock(NAME) ((NAME)=0) |
||
63 | #define __libc_lock_unlock_recursive(NAME) __libc_lock_unlock ((NAME).mutex) |
||
64 | |||
65 | #endif /* __SYS_LOCK_H__ */ |