Lines Matching refs:lock
17 // #pragma mark - recursive lock
21 __recursive_lock_get_recursion(recursive_lock *lock)
23 if (lock->holder == find_thread(NULL))
24 return lock->recursion;
31 __recursive_lock_init(recursive_lock *lock, const char *name)
33 recursive_lock_init_etc(lock, name, 0);
38 __recursive_lock_init_etc(recursive_lock *lock, const char *name, uint32 flags)
40 lock->holder = -1;
41 lock->recursion = 0;
42 mutex_init_etc(&lock->lock, name, flags);
47 __recursive_lock_destroy(recursive_lock *lock)
49 if (lock == NULL)
52 mutex_destroy(&lock->lock);
57 __recursive_lock_lock(recursive_lock *lock)
61 if (thread != lock->holder) {
62 mutex_lock(&lock->lock);
63 lock->holder = thread;
66 lock->recursion++;
72 __recursive_lock_unlock(recursive_lock *lock)
74 if (find_thread(NULL) != lock->holder) {
79 if (--lock->recursion == 0) {
80 lock->holder = -1;
81 mutex_unlock(&lock->lock);