Subversion Repositories Kolibri OS

Rev

Rev 4874 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  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.  
  31. #define __LOCK_INIT_RECURSIVE(class, lock) \
  32.   __libc_lock_define_initialized_recursive(class, lock)
  33.  
  34. #define __libc_lock_define_initialized(CLASS,NAME) \
  35.   CLASS __libc_lock_t NAME;
  36.  
  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__ */
  70.