#include "pthread_impl.h"

int __pthread_mutex_trylock_owner(pthread_mutex_t* m) {
    int old, own;
    int type = m->_m_type & PTHREAD_MUTEX_MASK;
    int tid = __thread_get_tid();

    old = atomic_load(&m->_m_lock);
    own = old & PTHREAD_MUTEX_OWNED_LOCK_MASK;
    if (own == tid && (type & PTHREAD_MUTEX_MASK) == PTHREAD_MUTEX_RECURSIVE) {
        if ((unsigned)m->_m_count >= INT_MAX)
            return EAGAIN;
        m->_m_count++;
        return 0;
    }

    if (own || a_cas_shim(&m->_m_lock, old, tid) != old) {
        return EBUSY;
    }

    return 0;
}

int pthread_mutex_trylock(pthread_mutex_t* m) {
    if ((m->_m_type & PTHREAD_MUTEX_MASK) == PTHREAD_MUTEX_NORMAL)
        return a_cas_shim(&m->_m_lock, 0, EBUSY) & EBUSY;
    return __pthread_mutex_trylock_owner(m);
}
