Subversion Repositories Kolibri OS

Rev

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__ */