Lines Matching refs:lock

24 	spinlock				lock;
37 mutex lock;
52 spinlock lock;
76 { ASSERT(find_thread(NULL) == (r)->lock.holder); }
81 extern bool _rw_lock_is_read_locked(rw_lock* lock);
115 # define RECURSIVE_LOCK_HOLDER(recursiveLock) ((recursiveLock)->lock.holder)
125 extern void recursive_lock_init(recursive_lock *lock, const char *name);
127 extern void recursive_lock_init_etc(recursive_lock *lock, const char *name,
129 extern void recursive_lock_destroy(recursive_lock *lock);
130 extern status_t recursive_lock_lock(recursive_lock *lock);
131 extern status_t recursive_lock_trylock(recursive_lock *lock);
132 extern void recursive_lock_unlock(recursive_lock *lock);
136 // for the lock is atomic. I.e. if "from" guards the object "to" belongs
146 extern int32 recursive_lock_get_recursion(recursive_lock *lock);
148 extern void rw_lock_init(rw_lock* lock, const char* name);
150 extern void rw_lock_init_etc(rw_lock* lock, const char* name, uint32 flags);
151 extern void rw_lock_destroy(rw_lock* lock);
152 extern status_t rw_lock_write_lock(rw_lock* lock);
154 extern void mutex_init(mutex* lock, const char* name);
156 extern void mutex_init_etc(mutex* lock, const char* name, uint32 flags);
157 extern void mutex_destroy(mutex* lock);
158 extern void mutex_transfer_lock(mutex* lock, thread_id thread);
161 // for the lock is atomic. I.e. if "from" guards the object "to" belongs
170 extern status_t _rw_lock_read_lock(rw_lock* lock);
171 extern status_t _rw_lock_read_lock_with_timeout(rw_lock* lock,
173 extern void _rw_lock_read_unlock(rw_lock* lock);
174 extern void _rw_lock_write_unlock(rw_lock* lock);
176 extern status_t _mutex_lock(mutex* lock, void* locker);
177 extern void _mutex_unlock(mutex* lock);
178 extern status_t _mutex_trylock(mutex* lock);
179 extern status_t _mutex_lock_with_timeout(mutex* lock, uint32 timeoutFlags,
184 rw_lock_read_lock(rw_lock* lock)
187 return _rw_lock_read_lock(lock);
189 int32 oldCount = atomic_add(&lock->count, 1);
191 return _rw_lock_read_lock(lock);
198 rw_lock_read_lock_with_timeout(rw_lock* lock, uint32 timeoutFlags,
202 return _rw_lock_read_lock_with_timeout(lock, timeoutFlags, timeout);
204 int32 oldCount = atomic_add(&lock->count, 1);
206 return _rw_lock_read_lock_with_timeout(lock, timeoutFlags, timeout);
213 rw_lock_read_unlock(rw_lock* lock)
216 _rw_lock_read_unlock(lock);
218 int32 oldCount = atomic_add(&lock->count, -1);
220 _rw_lock_read_unlock(lock);
226 rw_lock_write_unlock(rw_lock* lock)
228 _rw_lock_write_unlock(lock);
233 mutex_lock(mutex* lock)
236 return _mutex_lock(lock, NULL);
238 if (atomic_add(&lock->count, -1) < 0)
239 return _mutex_lock(lock, NULL);
246 mutex_trylock(mutex* lock)
249 return _mutex_trylock(lock);
251 if (atomic_test_and_set(&lock->count, -1, 0) != 0)
259 mutex_lock_with_timeout(mutex* lock, uint32 timeoutFlags, bigtime_t timeout)
262 return _mutex_lock_with_timeout(lock, timeoutFlags, timeout);
264 if (atomic_add(&lock->count, -1) < 0)
265 return _mutex_lock_with_timeout(lock, timeoutFlags, timeout);
272 mutex_unlock(mutex* lock)
275 if (atomic_add(&lock->count, 1) < -1)
277 _mutex_unlock(lock);
282 recursive_lock_transfer_lock(recursive_lock* lock, thread_id thread)
284 if (lock->recursion != 1)
285 panic("invalid recursion level for lock transfer!");
288 mutex_transfer_lock(&lock->lock, thread);
290 lock->holder = thread;