Lines Matching refs:lock

35     SRWLOCK lock;
42 CRYPTO_RWLOCK *lock;
46 if ((lock = OPENSSL_zalloc(sizeof(CRYPTO_win_rwlock))) == NULL)
48 rwlock = lock;
49 InitializeSRWLock(&rwlock->lock);
52 if ((lock = OPENSSL_zalloc(sizeof(CRITICAL_SECTION))) == NULL) {
59 if (!InitializeCriticalSectionAndSpinCount(lock, 0x400)) {
60 OPENSSL_free(lock);
64 InitializeCriticalSection(lock);
68 return lock;
71 __owur int CRYPTO_THREAD_read_lock(CRYPTO_RWLOCK *lock)
74 CRYPTO_win_rwlock *rwlock = lock;
76 AcquireSRWLockShared(&rwlock->lock);
78 EnterCriticalSection(lock);
83 __owur int CRYPTO_THREAD_write_lock(CRYPTO_RWLOCK *lock)
86 CRYPTO_win_rwlock *rwlock = lock;
88 AcquireSRWLockExclusive(&rwlock->lock);
91 EnterCriticalSection(lock);
96 int CRYPTO_THREAD_unlock(CRYPTO_RWLOCK *lock)
99 CRYPTO_win_rwlock *rwlock = lock;
103 ReleaseSRWLockExclusive(&rwlock->lock);
105 ReleaseSRWLockShared(&rwlock->lock);
108 LeaveCriticalSection(lock);
113 void CRYPTO_THREAD_lock_free(CRYPTO_RWLOCK *lock)
115 if (lock == NULL)
119 DeleteCriticalSection(lock);
121 OPENSSL_free(lock);
136 LONG volatile *lock = (LONG *)once;
139 if (*lock == ONCE_DONE)
143 result = InterlockedCompareExchange(lock, ONCE_ININIT, ONCE_UNINITED);
146 *lock = ONCE_DONE;
151 return (*lock == ONCE_DONE);
213 int CRYPTO_atomic_add(int *val, int amount, int *ret, CRYPTO_RWLOCK *lock)
220 CRYPTO_RWLOCK *lock)
223 if (lock == NULL || !CRYPTO_THREAD_write_lock(lock))
228 if (!CRYPTO_THREAD_unlock(lock))
238 int CRYPTO_atomic_load(uint64_t *val, uint64_t *ret, CRYPTO_RWLOCK *lock)
241 if (lock == NULL || !CRYPTO_THREAD_read_lock(lock))
244 if (!CRYPTO_THREAD_unlock(lock))