[libc-commits] [libc] [libc] Clean up pthread.yaml (PR #178327)

Roland McGrath via libc-commits libc-commits at lists.llvm.org
Wed Jan 28 10:15:24 PST 2026


https://github.com/frobtech updated https://github.com/llvm/llvm-project/pull/178327

>From 49c074275b1f0d0c2e9e73fb68f64e8803a39128 Mon Sep 17 00:00:00 2001
From: Roland McGrath <mcgrathr at google.com>
Date: Tue, 27 Jan 2026 16:20:46 -0800
Subject: [PATCH 1/2] [libc] Clean up pthread.yaml

Remove pthread.h.def and use pure generation.  Fix YAML records
for standards to correct syntax and remove redundancies.

Don't declare NULL, which is not specified for <pthread.h>.
Do declare PTHREAD_NULL.
---
 .../include/llvm-libc-macros/pthread-macros.h |   2 +-
 libc/include/pthread.yaml                     | 178 ++++++------------
 2 files changed, 54 insertions(+), 126 deletions(-)

diff --git a/libc/include/llvm-libc-macros/pthread-macros.h b/libc/include/llvm-libc-macros/pthread-macros.h
index ce467b7cc4d07..bba3faa11c4e2 100644
--- a/libc/include/llvm-libc-macros/pthread-macros.h
+++ b/libc/include/llvm-libc-macros/pthread-macros.h
@@ -9,7 +9,7 @@
 #ifndef LLVM_LIBC_MACROS_PTHREAD_MACRO_H
 #define LLVM_LIBC_MACROS_PTHREAD_MACRO_H
 
-#include "null-macro.h"
+#define PTHREAD_NULL {0}
 
 #define PTHREAD_CREATE_JOINABLE 0
 #define PTHREAD_CREATE_DETACHED 1
diff --git a/libc/include/pthread.yaml b/libc/include/pthread.yaml
index df4c31c1eca39..b0b1fa2f92651 100644
--- a/libc/include/pthread.yaml
+++ b/libc/include/pthread.yaml
@@ -1,6 +1,53 @@
 header: pthread.h
-header_template: pthread.h.def
-macros: []
+standards:
+  - posix
+macros:
+  - macro_name: "PTHREAD_NULL"
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_CREATE_JOINABLE"
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_CREATE_DETACHED"
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_MUTEX_NORMAL"
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_MUTEX_ERRORCHECK"
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_MUTEX_RECURSIVE"
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_MUTEX_DEFAULT"
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_MUTEX_STALLED"
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_MUTEX_ROBUST"
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_BARRIER_SERIAL_THREAD"
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_ONCE_INIT"
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_PROCESS_PRIVATE"
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_PROCESS_SHARED"
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_MUTEX_INITIALIZER"
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_RWLOCK_INITIALIZER"
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_STACK_MIN"
+    standards:
+      - gnu
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_RWLOCK_PREFER_READER_NP"
+    standards:
+      - gnu
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_RWLOCK_PREFER_WRITER_NP"
+    standards:
+      - gnu
+    macro_header: pthread-macros.h
+  - macro_name: "PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP"
+    standards:
+      - gnu
+    macro_header: pthread-macros.h
 types:
   - type_name: pthread_t
   - type_name: pthread_once_t
@@ -10,151 +57,106 @@ types:
   - type_name: pthread_barrierattr_t
   - type_name: pthread_key_t
   - type_name: pthread_condattr_t
-  - type_name: __pthread_tss_dtor_t
   - type_name: pthread_rwlock_t
   - type_name: pthread_rwlockattr_t
   - type_name: pthread_attr_t
-  - type_name: __pthread_start_t
-  - type_name: __pthread_once_func_t
-  - type_name: __atfork_callback_t
   - type_name: pthread_spinlock_t
-enums: []
 functions:
   - name: pthread_atfork
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: __atfork_callback_t
       - type: __atfork_callback_t
       - type: __atfork_callback_t
   - name: pthread_attr_destroy
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_attr_t *
   - name: pthread_attr_getdetachstate
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: const pthread_attr_t *
       - type: int *
   - name: pthread_attr_getguardsize
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: const pthread_attr_t *__restrict
       - type: size_t *__restrict
   - name: pthread_attr_getschedparam
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: const pthread_attr_t *__restrict
       - type: struct sched_param *__restrict
   - name: pthread_attr_getstack
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: const pthread_attr_t *__restrict
       - type: void **__restrict
       - type: size_t *__restrict
   - name: pthread_attr_getstacksize
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: const pthread_attr_t *__restrict
       - type: size_t *__restrict
   - name: pthread_attr_init
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_attr_t *
   - name: pthread_attr_setdetachstate
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_attr_t *
       - type: int
   - name: pthread_attr_setguardsize
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_attr_t *
       - type: size_t
   - name: pthread_attr_setschedparam
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_attr_t *__restrict
       - type: const struct sched_param *__restrict
   - name: pthread_attr_setstack
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_attr_t *
       - type: void *
       - type: size_t
   - name: pthread_attr_setstacksize
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_attr_t *
       - type: size_t
   - name: pthread_condattr_destroy
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_condattr_t *
   - name: pthread_condattr_getclock
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: const pthread_condattr_t *__restrict
       - type: clockid_t *__restrict
   - name: pthread_condattr_getpshared
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: const pthread_condattr_t *__restrict
       - type: int *__restrict
   - name: pthread_condattr_init
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_condattr_t *
   - name: pthread_condattr_setclock
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_condattr_t *
       - type: clockid_t
   - name: pthread_condattr_setpshared
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_condattr_t *
       - type: int
   - name: pthread_create
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_t *__restrict
@@ -162,309 +164,235 @@ functions:
       - type: __pthread_start_t
       - type: void *
   - name: pthread_detach
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_t
   - name: pthread_equal
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_t
       - type: pthread_t
   - name: pthread_exit
-    standards:
-      - POSIX
     return_type: _Noreturn void
     arguments:
       - type: void *
   - name: pthread_getname_np
     standards:
-      - GNUExtensions
+      - gnu
     return_type: int
     arguments:
       - type: pthread_t
       - type: char *
       - type: size_t
   - name: pthread_getspecific
-    standards:
-      - POSIX
     return_type: void *
     arguments:
       - type: pthread_key_t
   - name: pthread_join
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_t
       - type: void **
   - name: pthread_key_create
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_key_t *
       - type: __pthread_tss_dtor_t
   - name: pthread_key_delete
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_key_t
   - name: pthread_mutex_destroy
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_mutex_t *
   - name: pthread_mutex_init
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_mutex_t *__restrict
       - type: const pthread_mutexattr_t *__restrict
   - name: pthread_mutex_lock
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_mutex_t *
   - name: pthread_mutex_unlock
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_mutex_t *
   - name: pthread_mutexattr_destroy
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_mutexattr_t *
   - name: pthread_mutexattr_getpshared
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: const pthread_mutexattr_t *__restrict
       - type: int *__restrict
   - name: pthread_mutexattr_getrobust
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: const pthread_mutexattr_t *__restrict
       - type: int *__restrict
   - name: pthread_mutexattr_gettype
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: const pthread_mutexattr_t *__restrict
       - type: int *__restrict
   - name: pthread_mutexattr_init
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_mutexattr_t *
   - name: pthread_mutexattr_setpshared
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_mutexattr_t *__restrict
       - type: int
   - name: pthread_mutexattr_setrobust
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_mutexattr_t *__restrict
       - type: int
   - name: pthread_mutexattr_settype
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_mutexattr_t *__restrict
       - type: int
   - name: pthread_barrier_init
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_barrier_t *__restrict
       - type: const pthread_barrierattr_t *__restrict
       - type: int
   - name: pthread_barrier_wait
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_barrier_t *
   - name: pthread_barrier_destroy
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_barrier_t *
   - name: pthread_once
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_once_t *
       - type: __pthread_once_func_t
   - name: pthread_rwlock_clockrdlock
-    standards: POSIX
     return_type: int
     arguments:
       - type: pthread_rwlock_t *__restrict
       - type: clockid_t
       - type: const struct timespec *__restrict
   - name: pthread_rwlock_clockwrlock
-    standards: POSIX
     return_type: int
     arguments:
       - type: pthread_rwlock_t *__restrict
       - type: clockid_t
       - type: const struct timespec *__restrict
   - name: pthread_rwlock_destroy
-    standards: POSIX
     return_type: int
     arguments:
       - type: pthread_rwlock_t *
   - name: pthread_rwlock_init
-    standards: POSIX
     return_type: int
     arguments:
       - type: pthread_rwlock_t *
       - type: const pthread_rwlockattr_t *__restrict
   - name: pthread_rwlock_rdlock
-    standards: POSIX
     return_type: int
     arguments:
       - type: pthread_rwlock_t *
   - name: pthread_rwlock_timedrdlock
-    standards: POSIX
     return_type: int
     arguments:
       - type: pthread_rwlock_t *__restrict
       - type: const struct timespec *__restrict
   - name: pthread_rwlock_timedwrlock
-    standards: POSIX
     return_type: int
     arguments:
       - type: pthread_rwlock_t *__restrict
       - type: const struct timespec *__restrict
   - name: pthread_rwlock_tryrdlock
-    standards: POSIX
     return_type: int
     arguments:
       - type: pthread_rwlock_t *
   - name: pthread_rwlock_trywrlock
-    standards: POSIX
     return_type: int
     arguments:
       - type: pthread_rwlock_t *
   - name: pthread_rwlock_unlock
-    standards: POSIX
     return_type: int
     arguments:
       - type: pthread_rwlock_t *
   - name: pthread_rwlock_wrlock
-    standards: POSIX
     return_type: int
     arguments:
       - type: pthread_rwlock_t *
   - name: pthread_rwlockattr_destroy
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_rwlockattr_t *
   - name: pthread_rwlockattr_getkind_np
     standards:
-      - POSIX
+      - gnu
     return_type: int
     arguments:
       - type: pthread_rwlockattr_t *
       - type: int *
   - name: pthread_rwlockattr_getpshared
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: const pthread_rwlockattr_t *
       - type: int *
   - name: pthread_rwlockattr_init
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_rwlockattr_t *
   - name: pthread_rwlockattr_setkind_np
     standards:
-      - POSIX
+      - gnu
     return_type: int
     arguments:
       - type: pthread_rwlockattr_t *
       - type: int
   - name: pthread_rwlockattr_setpshared
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_rwlockattr_t *
       - type: int
   - name: pthread_self
-    standards:
-      - POSIX
     return_type: pthread_t
     arguments:
       - type: void
   - name: pthread_setname_np
     standards:
-      - GNUExtensions
+      - gnu
     return_type: int
     arguments:
       - type: pthread_t
       - type: const char *
   - name: pthread_setspecific
-    standards:
-      - POSIX
     return_type: int
     arguments:
       - type: pthread_key_t
       - type: const void *
   - name: pthread_spin_destroy
-    standards: POSIX
     return_type: int
     arguments:
       - type: pthread_spinlock_t *
   - name: pthread_spin_init
-    standards: POSIX
     return_type: int
     arguments:
       - type: pthread_spinlock_t *
       - type: int
   - name: pthread_spin_lock
-    standards: POSIX
     return_type: int
     arguments:
       - type: pthread_spinlock_t *
   - name: pthread_spin_trylock
-    standards: POSIX
     return_type: int
     arguments:
       - type: pthread_spinlock_t *
   - name: pthread_spin_unlock
-    standards: POSIX
     return_type: int
     arguments:
       - type: pthread_spinlock_t *

>From 5ceb772d4ca5f6aa46c5daf0b6daaf1a946565fc Mon Sep 17 00:00:00 2001
From: Roland McGrath <mcgrathr at google.com>
Date: Wed, 28 Jan 2026 10:12:45 -0800
Subject: [PATCH 2/2] Remove old file

---
 libc/include/pthread.h.def | 17 -----------------
 1 file changed, 17 deletions(-)
 delete mode 100644 libc/include/pthread.h.def

diff --git a/libc/include/pthread.h.def b/libc/include/pthread.h.def
deleted file mode 100644
index aa1e9983e4bb9..0000000000000
--- a/libc/include/pthread.h.def
+++ /dev/null
@@ -1,17 +0,0 @@
-//===-- POSIX header pthread.h --------------------------------------------===//
-//
-// 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_PTHREAD_H
-#define LLVM_LIBC_PTHREAD_H
-
-#include "__llvm-libc-common.h"
-#include "llvm-libc-macros/pthread-macros.h"
-
-%%public_api()
-
-#endif // LLVM_LIBC_PTHREAD_H



More information about the libc-commits mailing list