1: /* sys/lock.h 2: 3: Copyright 2004 Red Hat, Inc. 4: 5: This file is part of Cygwin. 6: 7: This software is a copyrighted work licensed under the terms of the 8: Cygwin license. Please consult the file "CYGWIN_LICENSE" for 9: details. */ 10: 11: #ifndef _SYS_LOCK_H_ 12: #define _SYS_LOCK_H_ 13: 14: typedef void *_LOCK_T; 15: #define _LOCK_RECURSIVE_T _LOCK_T 16: 17: /* 18: * This must match cygwins PTHREAD_XXX_MUTEX_INITIALIZER_NP which are 19: * defined in <pthread.h> 20: */ 21: #define _LOCK_T_RECURSIVE_INITIALIZER ((_LOCK_T)18) 22: #define _LOCK_T_INITIALIZER ((_LOCK_T)19) 23: 24: #define __LOCK_INIT(CLASS,NAME) \ 25: CLASS _LOCK_T NAME = _LOCK_T_INITIALIZER; 26: #define __LOCK_INIT_RECURSIVE(CLASS,NAME) \ 27: CLASS _LOCK_T NAME = _LOCK_T_RECURSIVE_INITIALIZER; 28: 29: #define __lock_init(__lock) __cygwin_lock_init(&__lock) 30: #define __lock_init_recursive(__lock) __cygwin_lock_init_recursive(&__lock) 31: #define __lock_close(__lock) __cygwin_lock_fini(&__lock) 32: #define __lock_close_recursive(__lock) __cygwin_lock_fini(&__lock) 33: #define __lock_acquire(__lock) __cygwin_lock_lock(&__lock) 34: #define __lock_acquire_recursive(__lock) __cygwin_lock_lock(&__lock) 35: #define __lock_try_acquire(lock) __cygwin_lock_trylock(&__lock) 36: #define __lock_try_acquire_recursive(lock) __cygwin_lock_trylock(&__lock) 37: #define __lock_release(__lock) __cygwin_lock_unlock(&__lock) 38: #define __lock_release_recursive(__lock) __cygwin_lock_unlock(&__lock) 39: 40: #ifdef __cplusplus 41: extern "C" 42: { 43: #endif 44: void __cygwin_lock_init(_LOCK_T *); 45: void __cygwin_lock_init_recursive(_LOCK_T *); 46: void __cygwin_lock_fini(_LOCK_T *); 47: void __cygwin_lock_lock(_LOCK_T *); 48: int __cygwin_lock_trylock(_LOCK_T *); 49: void __cygwin_lock_unlock(_LOCK_T *); 50: #ifdef __cplusplus 51: } 52: #endif 53: 54: #endif 55: