#include -- Mutex types PTHREAD_MUTEX_KIND_MASK PTHREAD_MUTEX_KIND_MASK_NP PTHREAD_MUTEX_NORMAL PTHREAD_MUTEX_RECURSIVE PTHREAD_MUTEX_RECURSIVE_NP PTHREAD_MUTEX_ERRORCHECK PTHREAD_MUTEX_ERRORCHECK_NP PTHREAD_MUTEX_ADAPTIVE_NP -- Mutex status -- These are hardcoded all over the code; there are no enums/macros for them. PTHREAD_MUTEX_DESTROYED -1 PTHREAD_MUTEX_UNLOCKED 0 PTHREAD_MUTEX_LOCKED_NO_WAITERS 1 -- For robust mutexes PTHREAD_MUTEX_INCONSISTENT PTHREAD_MUTEX_NOTRECOVERABLE FUTEX_OWNER_DIED -- For robust and PI mutexes FUTEX_WAITERS FUTEX_TID_MASK -- Mutex attributes PTHREAD_MUTEX_ROBUST_NORMAL_NP PTHREAD_MUTEX_PRIO_INHERIT_NP PTHREAD_MUTEX_PRIO_PROTECT_NP PTHREAD_MUTEX_PSHARED_BIT PTHREAD_MUTEX_PRIO_CEILING_SHIFT PTHREAD_MUTEX_PRIO_CEILING_MASK -- Mutex attribute flags PTHREAD_MUTEXATTR_PROTOCOL_SHIFT PTHREAD_MUTEXATTR_PROTOCOL_MASK PTHREAD_MUTEXATTR_PRIO_CEILING_MASK PTHREAD_MUTEXATTR_FLAG_ROBUST PTHREAD_MUTEXATTR_FLAG_PSHARED PTHREAD_MUTEXATTR_FLAG_BITS PTHREAD_MUTEX_NO_ELISION_NP -- Priority protocols PTHREAD_PRIO_NONE PTHREAD_PRIO_INHERIT PTHREAD_PRIO_PROTECT -- These values are hardcoded as well: -- Value of __mutex for shared condvars. PTHREAD_COND_SHARED (void *)~0l -- Value of __total_seq for destroyed condvars. PTHREAD_COND_DESTROYED -1ull -- __nwaiters encodes the number of threads waiting on a condvar -- and the clock ID. -- __nwaiters >> COND_NWAITERS_SHIFT gives us the number of waiters. COND_NWAITERS_SHIFT -- Condvar clock IDs CLOCK_REALTIME CLOCK_MONOTONIC CLOCK_PROCESS_CPUTIME_ID CLOCK_THREAD_CPUTIME_ID CLOCK_MONOTONIC_RAW CLOCK_REALTIME_COARSE CLOCK_MONOTONIC_COARSE -- Rwlock attributes PTHREAD_RWLOCK_PREFER_READER_NP PTHREAD_RWLOCK_PREFER_WRITER_NP PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP -- 'Shared' attribute values PTHREAD_PROCESS_PRIVATE PTHREAD_PROCESS_SHARED