[libc-commits] [libc] [libc] Add struct sigevent definition and proxy header. (PR #217699)
via libc-commits
libc-commits at lists.llvm.org
Thu Aug 20 10:08:17 PDT 2026
https://github.com/lntue created https://github.com/llvm/llvm-project/pull/217699
Definition follows the standard POSIX layout from: https://man7.org/linux/man-pages/man3/sigevent.3type.html
>From ebc6d2532352263eac22043147e617acc93c4b45 Mon Sep 17 00:00:00 2001
From: Tue Ly <lntue.h at gmail.com>
Date: Thu, 20 Aug 2026 16:54:25 +0000
Subject: [PATCH] [libc] Add struct sigevent definition and proxy header
Definition follows the standard POSIX layout from:
https://man7.org/linux/man-pages/man3/sigevent.3type.html
---
libc/hdr/types/CMakeLists.txt | 9 ++++++
libc/hdr/types/struct_sigevent.h | 27 ++++++++++++++++
.../llvm-libc-macros/linux/signal-macros.h | 6 ++++
libc/include/llvm-libc-types/CMakeLists.txt | 1 +
.../include/llvm-libc-types/struct_sigevent.h | 31 +++++++++++++++++++
libc/include/signal.yaml | 9 ++++++
libc/include/time.yaml | 1 +
7 files changed, 84 insertions(+)
create mode 100644 libc/hdr/types/struct_sigevent.h
create mode 100644 libc/include/llvm-libc-types/struct_sigevent.h
diff --git a/libc/hdr/types/CMakeLists.txt b/libc/hdr/types/CMakeLists.txt
index 4983109aa82f8..a6e180d44c363 100644
--- a/libc/hdr/types/CMakeLists.txt
+++ b/libc/hdr/types/CMakeLists.txt
@@ -425,6 +425,15 @@ add_proxy_header_library(
libc.include.signal
)
+add_proxy_header_library(
+ struct_sigevent
+ HDRS
+ struct_sigevent.h
+ FULL_BUILD_DEPENDS
+ libc.include.llvm-libc-types.struct_sigevent
+ libc.include.signal
+)
+
add_proxy_header_library(
FILE
HDRS
diff --git a/libc/hdr/types/struct_sigevent.h b/libc/hdr/types/struct_sigevent.h
new file mode 100644
index 0000000000000..6ebc9e492e539
--- /dev/null
+++ b/libc/hdr/types/struct_sigevent.h
@@ -0,0 +1,27 @@
+//===----------------------------------------------------------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Proxy for struct sigevent.
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_HDR_TYPES_STRUCT_SIGEVENT_H
+#define LLVM_LIBC_HDR_TYPES_STRUCT_SIGEVENT_H
+
+#ifdef LIBC_FULL_BUILD
+
+#include "include/llvm-libc-types/struct_sigevent.h"
+
+#else
+
+#include <signal.h>
+
+#endif // LIBC_FULL_BUILD
+
+#endif // LLVM_LIBC_HDR_TYPES_STRUCT_SIGEVENT_H
diff --git a/libc/include/llvm-libc-macros/linux/signal-macros.h b/libc/include/llvm-libc-macros/linux/signal-macros.h
index 8532c423c395f..8734fd72b80cb 100644
--- a/libc/include/llvm-libc-macros/linux/signal-macros.h
+++ b/libc/include/llvm-libc-macros/linux/signal-macros.h
@@ -155,4 +155,10 @@
#define SI_ASYNCNL (-60) // Async name lookup completion
#define SI_KERNEL 128 // Sent by the kernel
+// `sigev_notify` values for `struct sigevent`.
+#define SIGEV_SIGNAL 0
+#define SIGEV_NONE 1
+#define SIGEV_THREAD 2
+#define SIGEV_THREAD_ID 4
+
#endif // LLVM_LIBC_MACROS_LINUX_SIGNAL_MACROS_H
diff --git a/libc/include/llvm-libc-types/CMakeLists.txt b/libc/include/llvm-libc-types/CMakeLists.txt
index 69d62619f7979..59dc6c1c4f10a 100644
--- a/libc/include/llvm-libc-types/CMakeLists.txt
+++ b/libc/include/llvm-libc-types/CMakeLists.txt
@@ -205,6 +205,7 @@ add_header(__jmp_buf HDR __jmp_buf.h DEPENDS .sigset_t)
add_header(jmp_buf HDR jmp_buf.h DEPENDS .__jmp_buf)
add_header(sigjmp_buf HDR sigjmp_buf.h DEPENDS .__jmp_buf)
add_header(struct_sigaction HDR struct_sigaction.h DEPENDS .sigset_t .siginfo_t)
+add_header(struct_sigevent HDR struct_sigevent.h DEPENDS .union_sigval .pthread_attr_t .pid_t)
add_header(struct_timespec HDR struct_timespec.h DEPENDS .time_t)
add_header(
struct_stat
diff --git a/libc/include/llvm-libc-types/struct_sigevent.h b/libc/include/llvm-libc-types/struct_sigevent.h
new file mode 100644
index 0000000000000..d1341f2fdae38
--- /dev/null
+++ b/libc/include/llvm-libc-types/struct_sigevent.h
@@ -0,0 +1,31 @@
+//===----------------------------------------------------------------------===//
+//
+// 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
+//
+//===----------------------------------------------------------------------===//
+///
+/// \file
+/// Definition of struct sigevent type.
+/// https://man7.org/linux/man-pages/man3/sigevent.3type.html
+///
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_TYPES_STRUCT_SIGEVENT_H
+#define LLVM_LIBC_TYPES_STRUCT_SIGEVENT_H
+
+#include "pid_t.h"
+#include "pthread_attr_t.h"
+#include "union_sigval.h"
+
+struct sigevent {
+ int sigev_notify;
+ int sigev_signo;
+ union sigval sigev_value;
+ void (*sigev_notify_function)(union sigval);
+ pthread_attr_t *sigev_notify_attributes;
+ pid_t sigev_notify_thread_id;
+};
+
+#endif // LLVM_LIBC_TYPES_STRUCT_SIGEVENT_H
diff --git a/libc/include/signal.yaml b/libc/include/signal.yaml
index 307bbfedbec01..88c931edd51f9 100644
--- a/libc/include/signal.yaml
+++ b/libc/include/signal.yaml
@@ -20,6 +20,14 @@ macros:
macro_header: signal-macros.h
- macro_name: SIG_IGN
macro_header: signal-macros.h
+ - macro_name: SIGEV_SIGNAL
+ macro_header: signal-macros.h
+ - macro_name: SIGEV_NONE
+ macro_header: signal-macros.h
+ - macro_name: SIGEV_THREAD
+ macro_header: signal-macros.h
+ - macro_name: SIGEV_THREAD_ID
+ macro_header: signal-macros.h
types:
- type_name: pid_t
- type_name: sig_atomic_t
@@ -33,6 +41,7 @@ types:
- type_name: sigset_t
- type_name: stack_t
- type_name: struct_sigaction
+ - type_name: struct_sigevent
- type_name: union_sigval
enums: []
objects: []
diff --git a/libc/include/time.yaml b/libc/include/time.yaml
index a7c0cc7cc3e8e..440789d211944 100644
--- a/libc/include/time.yaml
+++ b/libc/include/time.yaml
@@ -19,6 +19,7 @@ types:
- type_name: size_t
- type_name: locale_t
- type_name: tm_gmtoff_t
+ - type_name: struct_sigevent
enums: []
objects: []
functions:
More information about the libc-commits
mailing list