Branch data Line data Source code
1 : :
2 : : #include "gwrl/lock.h"
3 : :
4 : : #ifdef __cplusplus
5 : : extern "C" {
6 : : #endif
7 : :
8 : : void
9 : 44 : lockid_init(lockid_t * lk) {
10 : : #if defined(PLATFORM_WINDOWS)
11 : : InitializeCriticalSection((LPCRITICAL_SECTION)lk);
12 : : #elif defined(PLATFORM_LINUX)
13 : : pthread_spin_init(lk,PTHREAD_PROCESS_PRIVATE);
14 : : #endif
15 : 44 : }
16 : :
17 : : void
18 : 4 : lockid_lock(lockid_t * lk) {
19 : : #if defined(PLATFORM_DARWIN)
20 : 4 : OSSpinLockLock(lk);
21 : : #elif defined(PLATFORM_WINDOWS)
22 : : EnterCriticalSection((LPCRITICAL_SECTION)lk);
23 : : #elif defined(PLATFORM_LINUX)
24 : : pthread_spin_lock(lk);
25 : : #endif
26 : 4 : }
27 : :
28 : : void
29 : 4 : lockid_unlock(lockid_t * lk) {
30 : : #if defined(PLATFORM_DARWIN)
31 : 4 : OSSpinLockUnlock(lk);
32 : : #elif defined(PLATFORM_WINDOWS)
33 : : LeaveCriticalSection((LPCRITICAL_SECTION)lk);
34 : : #elif defined(PLATFORM_LINUX)
35 : : pthread_spin_unlock(lk);
36 : : #endif
37 : 4 : }
38 : :
39 : : void
40 : 8 : lockid_free(lockid_t * lk) {
41 : : #if defined(PLATFORM_WINDOWS)
42 : : DeleteCriticalSection((LPCRITICAL_SECTION)lk);
43 : : #elif defined(PLATFORM_LINUX)
44 : : pthread_spin_destroy(lk);
45 : : #endif
46 : 8 : }
47 : :
48 : : #ifdef __cplusplus
49 : : }
50 : : #endif
|