Lines Matching defs:mutex
36 void mtx_lock_spin(struct mtx* mutex);
37 void mtx_unlock_spin(struct mtx* mutex);
50 mtx_lock(struct mtx* mutex)
52 if (mutex->type == MTX_DEF) {
53 mutex_lock(&mutex->u.mutex_.lock);
54 mutex->u.mutex_.owner = find_thread(NULL);
55 } else if (mutex->type == MTX_RECURSE) {
56 recursive_lock_lock(&mutex->u.recursive);
57 } else if (mutex->type == MTX_SPIN) {
58 mtx_lock_spin(mutex);
64 mtx_trylock(struct mtx* mutex)
66 if (mutex->type == MTX_DEF) {
67 if (mutex_trylock(&mutex->u.mutex_.lock) != B_OK)
69 mutex->u.mutex_.owner = find_thread(NULL);
71 } else if (mutex->type == MTX_RECURSE) {
72 if (recursive_lock_trylock(&mutex->u.recursive) != B_OK)
75 } else if (mutex->type == MTX_SPIN) {
83 mtx_unlock(struct mtx* mutex)
85 if (mutex->type == MTX_DEF) {
86 mutex->u.mutex_.owner = -1;
87 mutex_unlock(&mutex->u.mutex_.lock);
88 } else if (mutex->type == MTX_RECURSE) {
89 recursive_lock_unlock(&mutex->u.recursive);
90 } else if (mutex->type == MTX_SPIN) {
91 mtx_unlock_spin(mutex);
97 mtx_initialized(struct mtx* mutex)
105 mtx_owned(struct mtx* mutex)
107 if (mutex->type == MTX_DEF)
108 return mutex->u.mutex_.owner == find_thread(NULL);
109 if (mutex->type == MTX_RECURSE) {
111 return mutex->u.recursive.lock.holder == find_thread(NULL);
113 return mutex->u.recursive.holder == find_thread(NULL);
116 if (mutex->type == MTX_SPIN)
117 return mutex->u.spinlock_.lock.lock != 0;
124 mtx_recursed(struct mtx* mutex)
126 if (mutex->type == MTX_RECURSE)
127 return mutex->u.recursive.recursion != 0;