[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