Subversion Repositories Kolibri OS

Rev

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