1*bb722a7dSDimitry Andric //===-- Definition of pthread macros --------------------------------------===// 2*bb722a7dSDimitry Andric // 3*bb722a7dSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*bb722a7dSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5*bb722a7dSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*bb722a7dSDimitry Andric // 7*bb722a7dSDimitry Andric //===----------------------------------------------------------------------===// 8*bb722a7dSDimitry Andric 9*bb722a7dSDimitry Andric #ifndef LLVM_LIBC_MACROS_PTHREAD_MACRO_H 10*bb722a7dSDimitry Andric #define LLVM_LIBC_MACROS_PTHREAD_MACRO_H 11*bb722a7dSDimitry Andric 12*bb722a7dSDimitry Andric #include "null-macro.h" 13*bb722a7dSDimitry Andric 14*bb722a7dSDimitry Andric #define PTHREAD_CREATE_JOINABLE 0 15*bb722a7dSDimitry Andric #define PTHREAD_CREATE_DETACHED 1 16*bb722a7dSDimitry Andric 17*bb722a7dSDimitry Andric #define PTHREAD_MUTEX_NORMAL 0 18*bb722a7dSDimitry Andric #define PTHREAD_MUTEX_ERRORCHECK 1 19*bb722a7dSDimitry Andric #define PTHREAD_MUTEX_RECURSIVE 2 20*bb722a7dSDimitry Andric #define PTHREAD_MUTEX_DEFAULT PTHREAD_MUTEX_NORMAL 21*bb722a7dSDimitry Andric 22*bb722a7dSDimitry Andric #define PTHREAD_MUTEX_STALLED 0 23*bb722a7dSDimitry Andric #define PTHREAD_MUTEX_ROBUST 1 24*bb722a7dSDimitry Andric 25*bb722a7dSDimitry Andric #define PTHREAD_ONCE_INIT {0} 26*bb722a7dSDimitry Andric 27*bb722a7dSDimitry Andric #define PTHREAD_PROCESS_PRIVATE 0 28*bb722a7dSDimitry Andric #define PTHREAD_PROCESS_SHARED 1 29*bb722a7dSDimitry Andric 30*bb722a7dSDimitry Andric #ifdef __linux__ 31*bb722a7dSDimitry Andric #define PTHREAD_MUTEX_INITIALIZER \ 32*bb722a7dSDimitry Andric { \ 33*bb722a7dSDimitry Andric /* .__timed = */ 0, /* .__recursive = */ 0, \ 34*bb722a7dSDimitry Andric /* .__robust = */ 0, /* .__owner = */ NULL, \ 35*bb722a7dSDimitry Andric /* .__lock_count = */ 0, /* .__futex_word = */ {0}, \ 36*bb722a7dSDimitry Andric } 37*bb722a7dSDimitry Andric #else 38*bb722a7dSDimitry Andric #define PTHREAD_MUTEX_INITIALIZER \ 39*bb722a7dSDimitry Andric { \ 40*bb722a7dSDimitry Andric /* .__timed = */ 0, /* .__recursive = */ 0, \ 41*bb722a7dSDimitry Andric /* .__robust = */ 0, /* .__owner = */ NULL, \ 42*bb722a7dSDimitry Andric /* .__lock_count = */ 0, \ 43*bb722a7dSDimitry Andric } 44*bb722a7dSDimitry Andric #endif 45*bb722a7dSDimitry Andric 46*bb722a7dSDimitry Andric #define PTHREAD_RWLOCK_INITIALIZER \ 47*bb722a7dSDimitry Andric { \ 48*bb722a7dSDimitry Andric /* .__is_pshared = */ 0, \ 49*bb722a7dSDimitry Andric /* .__preference = */ 0, \ 50*bb722a7dSDimitry Andric /* .__state = */ 0, \ 51*bb722a7dSDimitry Andric /* .__write_tid = */ 0, \ 52*bb722a7dSDimitry Andric /* .__wait_queue_mutex = */ {0}, \ 53*bb722a7dSDimitry Andric /* .__pending_readers = */ {0}, \ 54*bb722a7dSDimitry Andric /* .__pending_writers = */ {0}, \ 55*bb722a7dSDimitry Andric /* .__reader_serialization = */ {0}, \ 56*bb722a7dSDimitry Andric /* .__writer_serialization = */ {0}, \ 57*bb722a7dSDimitry Andric } 58*bb722a7dSDimitry Andric 59*bb722a7dSDimitry Andric // glibc extensions 60*bb722a7dSDimitry Andric #define PTHREAD_STACK_MIN (1 << 14) // 16KB 61*bb722a7dSDimitry Andric #define PTHREAD_RWLOCK_PREFER_READER_NP 0 62*bb722a7dSDimitry Andric #define PTHREAD_RWLOCK_PREFER_WRITER_NP 1 63*bb722a7dSDimitry Andric #define PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP 2 64*bb722a7dSDimitry Andric 65*bb722a7dSDimitry Andric #endif // LLVM_LIBC_MACROS_PTHREAD_MACRO_H 66