diff --git a/libc/include/CMakeLists.txt b/libc/include/CMakeLists.txt index 6fdaa6c03c0c..18ce8e22d1a0 100644 --- a/libc/include/CMakeLists.txt +++ b/libc/include/CMakeLists.txt @@ -389,7 +389,7 @@ add_header_macro( pthread.h.def pthread.h DEPENDS - .llvm_libc_common_h + .llvm-libc-macros.pthread_macros .llvm-libc-types.__atfork_callback_t .llvm-libc-types.__pthread_once_func_t .llvm-libc-types.__pthread_start_t @@ -404,6 +404,7 @@ add_header_macro( .llvm-libc-types.pthread_rwlockattr_t .llvm-libc-types.pthread_spinlock_t .llvm-libc-types.pthread_t + .llvm_libc_common_h ) add_header_macro( diff --git a/libc/include/llvm-libc-macros/CMakeLists.txt b/libc/include/llvm-libc-macros/CMakeLists.txt index 75194923a452..9d5d9f654428 100644 --- a/libc/include/llvm-libc-macros/CMakeLists.txt +++ b/libc/include/llvm-libc-macros/CMakeLists.txt @@ -315,3 +315,9 @@ add_macro_header( HDR locale-macros.h ) + +add_macro_header( + pthread_macros + HDR + pthread-macros.h +) diff --git a/libc/include/llvm-libc-macros/pthread-macros.h b/libc/include/llvm-libc-macros/pthread-macros.h new file mode 100644 index 000000000000..8a144dbd2e61 --- /dev/null +++ b/libc/include/llvm-libc-macros/pthread-macros.h @@ -0,0 +1,37 @@ +//===-- Definition of pthread macros --------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_MACROS_PTHREAD_MACRO_H +#define LLVM_LIBC_MACROS_PTHREAD_MACRO_H + +#define PTHREAD_CREATE_JOINABLE 0 +#define PTHREAD_CREATE_DETACHED 1 + +#define PTHREAD_MUTEX_NORMAL 0 +#define PTHREAD_MUTEX_ERRORCHECK 1 +#define PTHREAD_MUTEX_RECURSIVE 2 +#define PTHREAD_MUTEX_DEFAULT PTHREAD_MUTEX_NORMAL + +#define PTHREAD_MUTEX_STALLED 0 +#define PTHREAD_MUTEX_ROBUST 1 + +#define PTHREAD_ONCE_INIT {0} + +#define PTHREAD_PROCESS_PRIVATE 0 +#define PTHREAD_PROCESS_SHARED 1 + +#define PTHREAD_MUTEX_INITIALIZER {0} +#define PTHREAD_RWLOCK_INITIALIZER {0} + +// glibc extensions +#define PTHREAD_STACK_MIN (1 << 14) // 16KB +#define PTHREAD_RWLOCK_PREFER_READER_NP 0 +#define PTHREAD_RWLOCK_PREFER_WRITER_NP 1 +#define PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP 2 + +#endif // LLVM_LIBC_MACROS_PTHREAD_MACRO_H diff --git a/libc/include/pthread.h.def b/libc/include/pthread.h.def index 4dbeed6b5f32..aa1e9983e4bb 100644 --- a/libc/include/pthread.h.def +++ b/libc/include/pthread.h.def @@ -10,39 +10,7 @@ #define LLVM_LIBC_PTHREAD_H #include "__llvm-libc-common.h" - -// TODO: move to a pthreads-macros.h file: -// https://github.com/llvm/llvm-project/issues/88997 - -#define PTHREAD_STACK_MIN (1 << 14) // 16KB - -#define PTHREAD_MUTEX_INITIALIZER {0} -#define PTHREAD_RWLOCK_INITIALIZER {} -#define PTHREAD_ONCE_INIT {0} - -enum { - PTHREAD_CREATE_JOINABLE = 0x0, - PTHREAD_CREATE_DETACHED = 0x1, - - PTHREAD_MUTEX_NORMAL = 0x0, - PTHREAD_MUTEX_ERRORCHECK = 0x1, - PTHREAD_MUTEX_RECURSIVE = 0x2, - PTHREAD_MUTEX_DEFAULT = PTHREAD_MUTEX_NORMAL, - - PTHREAD_PROCESS_PRIVATE = 0x0, - PTHREAD_PROCESS_SHARED = 0x1, - - PTHREAD_MUTEX_STALLED = 0x0, - PTHREAD_MUTEX_ROBUST = 0x1, -}; - -#define PTHREAD_PROCESS_PRIVATE 0 -#define PTHREAD_PROCESS_SHARED 1 - -#define PTHREAD_RWLOCK_PREFER_READER_NP 0 -#define PTHREAD_RWLOCK_PREFER_WRITER_NP 1 -#define PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP 2 - +#include "llvm-libc-macros/pthread-macros.h" %%public_api()