82556141e463b8a9a0d7ea4f7dcacebf5c296bdd
[musl] / src / thread / pthread_mutex_lock.c
1 #include "pthread_impl.h"
2
3 int pthread_mutex_lock(pthread_mutex_t *m)
4 {
5         int r;
6         while ((r=pthread_mutex_trylock(m)) == EBUSY) {
7                 if (m->_m_type == PTHREAD_MUTEX_ERRORCHECK
8                  && m->_m_owner == pthread_self()->tid)
9                         return EDEADLK;
10                 __wait(&m->_m_lock, &m->_m_waiters, 1, 0);
11         }
12         return r;
13 }