1570af302Sopenharmony_ci#include "pthread_impl.h" 2570af302Sopenharmony_ci#include "atomic.h" 3570af302Sopenharmony_ci 4570af302Sopenharmony_ciint pthread_mutex_consistent(pthread_mutex_t *m) 5570af302Sopenharmony_ci{ 6570af302Sopenharmony_ci int old = m->_m_lock; 7570af302Sopenharmony_ci int own = old & 0x3fffffff; 8570af302Sopenharmony_ci if (!(m->_m_type & 4) || !own || !(old & 0x40000000)) 9570af302Sopenharmony_ci return EINVAL; 10570af302Sopenharmony_ci if (own != __pthread_self()->tid) 11570af302Sopenharmony_ci return EPERM; 12570af302Sopenharmony_ci a_and(&m->_m_lock, ~0x40000000); 13570af302Sopenharmony_ci return 0; 14570af302Sopenharmony_ci} 15