#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 -- Condition variable -- FIXME Why do macros prefixed with __ cannot be used directly? PTHREAD_COND_SHARED_MASK __PTHREAD_COND_SHARED_MASK PTHREAD_COND_CLOCK_MONOTONIC_MASK __PTHREAD_COND_CLOCK_MONOTONIC_MASK COND_CLOCK_BITS -- These values are hardcoded: PTHREAD_COND_WREFS_SHIFT 3 -- Rwlock attributes PTHREAD_RWLOCK_PREFER_READER_NP PTHREAD_RWLOCK_PREFER_WRITER_NP PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP -- Rwlock PTHREAD_RWLOCK_WRPHASE PTHREAD_RWLOCK_WRLOCKED PTHREAD_RWLOCK_READER_SHIFT -- 'Shared' attribute values PTHREAD_PROCESS_PRIVATE PTHREAD_PROCESS_SHARED