[libc-commits] [libc] [libc][sched] Implement proxy headers for `cpu_set_t`, `struct sched_param` and `sched_macros`. (PR #126303)

Krishna Pandey via libc-commits libc-commits at lists.llvm.org
Tue Feb 11 09:56:41 PST 2025


https://github.com/krishna2803 updated https://github.com/llvm/llvm-project/pull/126303

>From 1a2fe1322737b1d627bbb0d81180bf4fa5bee18a Mon Sep 17 00:00:00 2001
From: krishna2803 <kpandey81930 at gmail.com>
Date: Sat, 8 Feb 2025 01:01:25 +0530
Subject: [PATCH 01/12] feat: add proxy header for `cpu_set_t`

---
 libc/hdr/types/cpu_set_t.h | 22 ++++++++++++++++++++++
 1 file changed, 22 insertions(+)
 create mode 100644 libc/hdr/types/cpu_set_t.h

diff --git a/libc/hdr/types/cpu_set_t.h b/libc/hdr/types/cpu_set_t.h
new file mode 100644
index 000000000000000..26aed7592fa2c58
--- /dev/null
+++ b/libc/hdr/types/cpu_set_t.h
@@ -0,0 +1,22 @@
+//===-- Proxy for cpu_set_t -----------------------------------------------===//
+//
+// 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_HDR_TYPES_CPU_SET_T_H
+#define LLVM_LIBC_HDR_TYPES_CPU_SET_T_H
+
+#ifdef LIBC_FULL_BUILD
+
+#include "include/llvm-libc-types/cpu_set_t.h"
+
+#else // Overlay mode
+
+#include <sched.h>
+
+#endif // LLVM_LIBC_FULL_BUILD
+
+#endif // LLVM_LIBC_HDR_TYPES_CPU_SET_T_H

>From ba8c535683ab3602042d49de3ce7ea3dc169bd33 Mon Sep 17 00:00:00 2001
From: krishna2803 <kpandey81930 at gmail.com>
Date: Sat, 8 Feb 2025 01:30:23 +0530
Subject: [PATCH 02/12] fix: replace <sched.h> with proxy headers

---
 libc/src/sched/linux/sched_getaffinity.cpp         | 2 +-
 libc/src/sched/linux/sched_getcpucount.cpp         | 2 +-
 libc/src/sched/linux/sched_setaffinity.cpp         | 2 +-
 libc/src/sched/sched_getaffinity.h                 | 2 +-
 libc/src/sched/sched_getcpucount.h                 | 2 +-
 libc/src/sched/sched_getparam.h                    | 2 +-
 libc/src/sched/sched_getscheduler.h                | 2 +-
 libc/src/sched/sched_rr_get_interval.h             | 2 +-
 libc/src/sched/sched_setaffinity.h                 | 2 +-
 libc/src/sched/sched_setparam.h                    | 2 +-
 libc/src/sched/sched_setscheduler.h                | 2 +-
 libc/test/src/sched/affinity_test.cpp              | 2 +-
 libc/test/src/sched/cpu_count_test.cpp             | 2 +-
 libc/test/src/sched/get_priority_test.cpp          | 2 +-
 libc/test/src/sched/param_and_scheduler_test.cpp   | 2 +-
 libc/test/src/sched/sched_rr_get_interval_test.cpp | 2 +-
 16 files changed, 16 insertions(+), 16 deletions(-)

diff --git a/libc/src/sched/linux/sched_getaffinity.cpp b/libc/src/sched/linux/sched_getaffinity.cpp
index 7b1fd8c5aa2aff5..41c7731142aebdd 100644
--- a/libc/src/sched/linux/sched_getaffinity.cpp
+++ b/libc/src/sched/linux/sched_getaffinity.cpp
@@ -13,7 +13,7 @@
 #include "src/__support/macros/config.h"
 #include "src/errno/libc_errno.h"
 
-#include <sched.h>
+#include "hdr/types/cpu_set_t.h"
 #include <stdint.h>
 #include <sys/syscall.h> // For syscall numbers.
 
diff --git a/libc/src/sched/linux/sched_getcpucount.cpp b/libc/src/sched/linux/sched_getcpucount.cpp
index dbda4b2c789ad26..849123d9b960e3a 100644
--- a/libc/src/sched/linux/sched_getcpucount.cpp
+++ b/libc/src/sched/linux/sched_getcpucount.cpp
@@ -11,7 +11,7 @@
 #include "src/__support/common.h"
 #include "src/__support/macros/config.h"
 
-#include <sched.h>
+#include "hdr/types/cpu_set_t.h"
 #include <stddef.h>
 
 namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/sched/linux/sched_setaffinity.cpp b/libc/src/sched/linux/sched_setaffinity.cpp
index cad48c26bf93835..a131bda2bb5eb94 100644
--- a/libc/src/sched/linux/sched_setaffinity.cpp
+++ b/libc/src/sched/linux/sched_setaffinity.cpp
@@ -13,7 +13,7 @@
 #include "src/__support/macros/config.h"
 #include "src/errno/libc_errno.h"
 
-#include <sched.h>
+#include "hdr/types/cpu_set_t.h"
 #include <sys/syscall.h> // For syscall numbers.
 
 namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/sched/sched_getaffinity.h b/libc/src/sched/sched_getaffinity.h
index 52ec5bca6b22a21..de8a14d51daa99c 100644
--- a/libc/src/sched/sched_getaffinity.h
+++ b/libc/src/sched/sched_getaffinity.h
@@ -10,7 +10,7 @@
 #define LLVM_LIBC_SRC_SCHED_SCHED_GETAFFINITY_H
 
 #include "src/__support/macros/config.h"
-#include <sched.h>
+#include "hdr/types/cpu_set_t.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_getcpucount.h b/libc/src/sched/sched_getcpucount.h
index 8f35301ca6c0d43..f04099f8db0c45f 100644
--- a/libc/src/sched/sched_getcpucount.h
+++ b/libc/src/sched/sched_getcpucount.h
@@ -10,7 +10,7 @@
 #define LLVM_LIBC_SRC_SCHED_SCHED_GETCPUCOUNT_H
 
 #include "src/__support/macros/config.h"
-#include <sched.h>
+#include "hdr/types/cpu_set_t.h"
 #include <stddef.h>
 
 namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/sched/sched_getparam.h b/libc/src/sched/sched_getparam.h
index e1b23656d585958..03bfc008be95b85 100644
--- a/libc/src/sched/sched_getparam.h
+++ b/libc/src/sched/sched_getparam.h
@@ -10,7 +10,7 @@
 #define LLVM_LIBC_SRC_SCHED_SCHED_GETPARAM_H
 
 #include "src/__support/macros/config.h"
-#include <sched.h>
+#include "hdr/types/cpu_set_t.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_getscheduler.h b/libc/src/sched/sched_getscheduler.h
index d29e902180ea8ab..970b96097d33d1d 100644
--- a/libc/src/sched/sched_getscheduler.h
+++ b/libc/src/sched/sched_getscheduler.h
@@ -10,7 +10,7 @@
 #define LLVM_LIBC_SRC_SCHED_SCHED_GETSCHEDULER_H
 
 #include "src/__support/macros/config.h"
-#include <sched.h>
+#include "hdr/types/cpu_set_t.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_rr_get_interval.h b/libc/src/sched/sched_rr_get_interval.h
index ff093298a3bb341..b8bf17497cb3292 100644
--- a/libc/src/sched/sched_rr_get_interval.h
+++ b/libc/src/sched/sched_rr_get_interval.h
@@ -10,7 +10,7 @@
 #define LLVM_LIBC_SRC_SCHED_SCHED_RR_GET_INTERVAL_H
 
 #include "src/__support/macros/config.h"
-#include <sched.h>
+#include "hdr/types/cpu_set_t.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_setaffinity.h b/libc/src/sched/sched_setaffinity.h
index cb2303dd813e23e..368aac0cc5bf98b 100644
--- a/libc/src/sched/sched_setaffinity.h
+++ b/libc/src/sched/sched_setaffinity.h
@@ -10,7 +10,7 @@
 #define LLVM_LIBC_SRC_SCHED_SCHED_SETAFFINITY_H
 
 #include "src/__support/macros/config.h"
-#include <sched.h>
+#include "hdr/types/cpu_set_t.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_setparam.h b/libc/src/sched/sched_setparam.h
index e4691a7912000fc..cf5b2840c4551f7 100644
--- a/libc/src/sched/sched_setparam.h
+++ b/libc/src/sched/sched_setparam.h
@@ -10,7 +10,7 @@
 #define LLVM_LIBC_SRC_SCHED_SCHED_SETPARAM_H
 
 #include "src/__support/macros/config.h"
-#include <sched.h>
+#include "hdr/types/cpu_set_t.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_setscheduler.h b/libc/src/sched/sched_setscheduler.h
index e745002c0d961cf..5c99aa2d10a004a 100644
--- a/libc/src/sched/sched_setscheduler.h
+++ b/libc/src/sched/sched_setscheduler.h
@@ -10,7 +10,7 @@
 #define LLVM_LIBC_SRC_SCHED_SCHED_SETSCHEDULER_H
 
 #include "src/__support/macros/config.h"
-#include <sched.h>
+#include "hdr/types/cpu_set_t.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/test/src/sched/affinity_test.cpp b/libc/test/src/sched/affinity_test.cpp
index b5085203e5ce0a4..5f7d6571b481e51 100644
--- a/libc/test/src/sched/affinity_test.cpp
+++ b/libc/test/src/sched/affinity_test.cpp
@@ -12,7 +12,7 @@
 #include "src/sched/sched_setaffinity.h"
 #include "test/UnitTest/ErrnoSetterMatcher.h"
 
-#include <sched.h>
+#include "hdr/types/cpu_set_t.h"
 #include <sys/syscall.h>
 
 TEST(LlvmLibcSchedAffinityTest, SmokeTest) {
diff --git a/libc/test/src/sched/cpu_count_test.cpp b/libc/test/src/sched/cpu_count_test.cpp
index 5250368a261622e..b0c7cfe8614a05c 100644
--- a/libc/test/src/sched/cpu_count_test.cpp
+++ b/libc/test/src/sched/cpu_count_test.cpp
@@ -12,7 +12,7 @@
 #include "src/sched/sched_getcpucount.h"
 #include "test/UnitTest/ErrnoSetterMatcher.h"
 
-#include <sched.h>
+#include "hdr/types/cpu_set_t.h"
 #include <sys/syscall.h>
 
 TEST(LlvmLibcSchedCpuCountTest, SmokeTest) {
diff --git a/libc/test/src/sched/get_priority_test.cpp b/libc/test/src/sched/get_priority_test.cpp
index 59205c51e4a164f..fe437cda4d7b6c1 100644
--- a/libc/test/src/sched/get_priority_test.cpp
+++ b/libc/test/src/sched/get_priority_test.cpp
@@ -11,7 +11,7 @@
 #include "src/sched/sched_get_priority_min.h"
 #include "test/UnitTest/Test.h"
 
-#include <sched.h>
+#include "hdr/types/cpu_set_t.h"
 
 TEST(LlvmLibcSchedGetPriorityTest, HandleBadPolicyTest) {
 
diff --git a/libc/test/src/sched/param_and_scheduler_test.cpp b/libc/test/src/sched/param_and_scheduler_test.cpp
index 747c7e3409e413f..c5d6217e75b3210 100644
--- a/libc/test/src/sched/param_and_scheduler_test.cpp
+++ b/libc/test/src/sched/param_and_scheduler_test.cpp
@@ -16,7 +16,7 @@
 #include "src/unistd/getuid.h"
 #include "test/UnitTest/Test.h"
 
-#include <sched.h>
+#include "hdr/types/cpu_set_t.h"
 
 // We Test:
 // SCHED_OTHER, SCHED_FIFO, SCHED_RR
diff --git a/libc/test/src/sched/sched_rr_get_interval_test.cpp b/libc/test/src/sched/sched_rr_get_interval_test.cpp
index c22a2c76d743cda..2dadf8bd7df3a62 100644
--- a/libc/test/src/sched/sched_rr_get_interval_test.cpp
+++ b/libc/test/src/sched/sched_rr_get_interval_test.cpp
@@ -14,7 +14,7 @@
 #include "src/unistd/getuid.h"
 #include "test/UnitTest/Test.h"
 
-#include <sched.h>
+#include "hdr/types/cpu_set_t.h"
 
 TEST(LlvmLibcSchedRRGetIntervalTest, SmokeTest) {
   LIBC_NAMESPACE::libc_errno = 0;

>From c6a14a1c2c095a909899f24ee87f9ae62f1cb76b Mon Sep 17 00:00:00 2001
From: krishna2803 <kpandey81930 at gmail.com>
Date: Tue, 11 Feb 2025 20:05:41 +0530
Subject: [PATCH 03/12] fix: rename `__mask` to `__bits` for compatibility with
 glibc cpu_set_t

Signed-off-by: krishna2803 <kpandey81930 at gmail.com>
---
 libc/include/llvm-libc-types/cpu_set_t.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libc/include/llvm-libc-types/cpu_set_t.h b/libc/include/llvm-libc-types/cpu_set_t.h
index e7f52597e147e18..10c0f13a0603e4b 100644
--- a/libc/include/llvm-libc-types/cpu_set_t.h
+++ b/libc/include/llvm-libc-types/cpu_set_t.h
@@ -12,7 +12,7 @@
 typedef struct {
   // If a processor with more than 1024 CPUs is to be supported in future,
   // we need to adjust the size of this array.
-  unsigned long __mask[128 / sizeof(unsigned long)];
+  unsigned long __bits[128 / sizeof(unsigned long)];
 } cpu_set_t;
 
 #endif // LLVM_LIBC_TYPES_CPU_SET_T_H

>From 822bdb0c0735f7224111fda9ae4e1212ab225ae2 Mon Sep 17 00:00:00 2001
From: krishna2803 <kpandey81930 at gmail.com>
Date: Tue, 11 Feb 2025 20:16:12 +0530
Subject: [PATCH 04/12] fix: change to proxy headers for `cpu_set_t`, `size_t`
 and `pid_t` types

Signed-off-by: krishna2803 <kpandey81930 at gmail.com>
---
 libc/src/sched/linux/sched_getaffinity.cpp     | 7 +++++--
 libc/src/sched/linux/sched_getcpucount.cpp     | 8 ++++----
 libc/src/sched/linux/sched_getparam.cpp        | 6 ++++--
 libc/src/sched/linux/sched_getscheduler.cpp    | 6 ++++--
 libc/src/sched/linux/sched_rr_get_interval.cpp | 7 +++++--
 libc/src/sched/linux/sched_setaffinity.cpp     | 6 ++++--
 libc/src/sched/linux/sched_setparam.cpp        | 6 ++++--
 libc/src/sched/linux/sched_setscheduler.cpp    | 6 ++++--
 libc/src/sched/sched_getaffinity.h             | 4 +++-
 libc/src/sched/sched_getcpucount.h             | 4 ++--
 libc/src/sched/sched_getparam.h                | 4 ++--
 libc/src/sched/sched_getscheduler.h            | 4 ++--
 libc/src/sched/sched_rr_get_interval.h         | 5 +++--
 libc/src/sched/sched_setaffinity.h             | 4 +++-
 libc/src/sched/sched_setparam.h                | 3 ++-
 libc/src/sched/sched_setscheduler.h            | 4 ++--
 16 files changed, 53 insertions(+), 31 deletions(-)

diff --git a/libc/src/sched/linux/sched_getaffinity.cpp b/libc/src/sched/linux/sched_getaffinity.cpp
index 41c7731142aebdd..aa34b96e14eb3e8 100644
--- a/libc/src/sched/linux/sched_getaffinity.cpp
+++ b/libc/src/sched/linux/sched_getaffinity.cpp
@@ -9,11 +9,14 @@
 #include "src/sched/sched_getaffinity.h"
 
 #include "src/__support/OSUtil/syscall.h" // For internal syscall function.
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/common.h" // LLVM_LIBC_FUNCTION
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 #include "src/errno/libc_errno.h"
 
 #include "hdr/types/cpu_set_t.h"
+#include "hdr/types/pid_t.h"
+#include "hdr/types/size_t.h"
+
 #include <stdint.h>
 #include <sys/syscall.h> // For syscall numbers.
 
diff --git a/libc/src/sched/linux/sched_getcpucount.cpp b/libc/src/sched/linux/sched_getcpucount.cpp
index 849123d9b960e3a..28945476691ce35 100644
--- a/libc/src/sched/linux/sched_getcpucount.cpp
+++ b/libc/src/sched/linux/sched_getcpucount.cpp
@@ -8,11 +8,11 @@
 
 #include "src/sched/sched_getcpucount.h"
 
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/common.h" // LLVM_LIBC_FUNCTION
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 
 #include "hdr/types/cpu_set_t.h"
-#include <stddef.h>
+#include "hdr/types/size_t.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
@@ -20,7 +20,7 @@ LLVM_LIBC_FUNCTION(int, __sched_getcpucount,
                    (size_t cpuset_size, const cpu_set_t *mask)) {
   int result = 0;
   for (size_t i = 0; i < cpuset_size / sizeof(long); ++i) {
-    result += __builtin_popcountl(mask->__mask[i]);
+    result += __builtin_popcountl(mask->__bits[i]);
   }
   return result;
 }
diff --git a/libc/src/sched/linux/sched_getparam.cpp b/libc/src/sched/linux/sched_getparam.cpp
index 75756a65f0ede58..38ce720ef9e9d73 100644
--- a/libc/src/sched/linux/sched_getparam.cpp
+++ b/libc/src/sched/linux/sched_getparam.cpp
@@ -9,10 +9,12 @@
 #include "src/sched/sched_getparam.h"
 
 #include "src/__support/OSUtil/syscall.h" // For internal syscall function.
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/common.h" // LLVM_LIBC_FUNCTION
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 #include "src/errno/libc_errno.h"
 
+#include "hdr/types/pid_t.h"
+
 #include <sys/syscall.h> // For syscall numbers.
 
 namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/sched/linux/sched_getscheduler.cpp b/libc/src/sched/linux/sched_getscheduler.cpp
index 545cda8e7484b9d..7be5c72aa765a61 100644
--- a/libc/src/sched/linux/sched_getscheduler.cpp
+++ b/libc/src/sched/linux/sched_getscheduler.cpp
@@ -9,10 +9,12 @@
 #include "src/sched/sched_getscheduler.h"
 
 #include "src/__support/OSUtil/syscall.h" // For internal syscall function.
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/common.h" // LLVM_LIBC_FUNCTION
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 #include "src/errno/libc_errno.h"
 
+#include "hdr/types/pid_t.h"
+
 #include <sys/syscall.h> // For syscall numbers.
 
 namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/sched/linux/sched_rr_get_interval.cpp b/libc/src/sched/linux/sched_rr_get_interval.cpp
index 1f0ef69dfc893a1..42b9ea87df3b502 100644
--- a/libc/src/sched/linux/sched_rr_get_interval.cpp
+++ b/libc/src/sched/linux/sched_rr_get_interval.cpp
@@ -9,10 +9,13 @@
 #include "src/sched/sched_rr_get_interval.h"
 
 #include "src/__support/OSUtil/syscall.h" // For internal syscall function.
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/common.h" // LLVM_LIBC_FUNCTION
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 #include "src/errno/libc_errno.h"
 
+#include "hdr/types/pid_t.h"
+#include "hdr/types/struct_timespec.h"
+
 #include <sys/syscall.h> // For syscall numbers.
 
 #ifdef SYS_sched_rr_get_interval_time64
diff --git a/libc/src/sched/linux/sched_setaffinity.cpp b/libc/src/sched/linux/sched_setaffinity.cpp
index a131bda2bb5eb94..a8f0a4d70e7c445 100644
--- a/libc/src/sched/linux/sched_setaffinity.cpp
+++ b/libc/src/sched/linux/sched_setaffinity.cpp
@@ -9,11 +9,13 @@
 #include "src/sched/sched_setaffinity.h"
 
 #include "src/__support/OSUtil/syscall.h" // For internal syscall function.
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/common.h" // LLVM_LIBC_FUNCTION
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 #include "src/errno/libc_errno.h"
 
 #include "hdr/types/cpu_set_t.h"
+#include "hdr/types/pid_t.h"
+#include "hdr/types/size_t.h"
 #include <sys/syscall.h> // For syscall numbers.
 
 namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/sched/linux/sched_setparam.cpp b/libc/src/sched/linux/sched_setparam.cpp
index e78e78a707e0555..0051c272003e89d 100644
--- a/libc/src/sched/linux/sched_setparam.cpp
+++ b/libc/src/sched/linux/sched_setparam.cpp
@@ -9,10 +9,12 @@
 #include "src/sched/sched_setparam.h"
 
 #include "src/__support/OSUtil/syscall.h" // For internal syscall function.
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/common.h" // LLVM_LIBC_FUNCTION
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 #include "src/errno/libc_errno.h"
 
+#include "hdr/types/pid_t.h"
+
 #include <sys/syscall.h> // For syscall numbers.
 
 namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/sched/linux/sched_setscheduler.cpp b/libc/src/sched/linux/sched_setscheduler.cpp
index b6b6f667b3f9ead..0f867230a45de42 100644
--- a/libc/src/sched/linux/sched_setscheduler.cpp
+++ b/libc/src/sched/linux/sched_setscheduler.cpp
@@ -9,10 +9,12 @@
 #include "src/sched/sched_setscheduler.h"
 
 #include "src/__support/OSUtil/syscall.h" // For internal syscall function.
-#include "src/__support/common.h"
-#include "src/__support/macros/config.h"
+#include "src/__support/common.h" // LLVM_LIBC_FUNCTION
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 #include "src/errno/libc_errno.h"
 
+#include "hdr/types/pid_t.h"
+
 #include <sys/syscall.h> // For syscall numbers.
 
 namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/sched/sched_getaffinity.h b/libc/src/sched/sched_getaffinity.h
index de8a14d51daa99c..03ce790717080f7 100644
--- a/libc/src/sched/sched_getaffinity.h
+++ b/libc/src/sched/sched_getaffinity.h
@@ -9,8 +9,10 @@
 #ifndef LLVM_LIBC_SRC_SCHED_SCHED_GETAFFINITY_H
 #define LLVM_LIBC_SRC_SCHED_SCHED_GETAFFINITY_H
 
-#include "src/__support/macros/config.h"
+#include "src/__support/macros/config.h"    // LIBC_NAMESPACE_DECL
 #include "hdr/types/cpu_set_t.h"
+#include "hdr/types/size_t.h"
+#include "hdr/types/pid_t.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_getcpucount.h b/libc/src/sched/sched_getcpucount.h
index f04099f8db0c45f..d57b779991c2f46 100644
--- a/libc/src/sched/sched_getcpucount.h
+++ b/libc/src/sched/sched_getcpucount.h
@@ -9,9 +9,9 @@
 #ifndef LLVM_LIBC_SRC_SCHED_SCHED_GETCPUCOUNT_H
 #define LLVM_LIBC_SRC_SCHED_SCHED_GETCPUCOUNT_H
 
-#include "src/__support/macros/config.h"
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 #include "hdr/types/cpu_set_t.h"
-#include <stddef.h>
+#include "hdr/types/size_t.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_getparam.h b/libc/src/sched/sched_getparam.h
index 03bfc008be95b85..28c75619bee9292 100644
--- a/libc/src/sched/sched_getparam.h
+++ b/libc/src/sched/sched_getparam.h
@@ -9,8 +9,8 @@
 #ifndef LLVM_LIBC_SRC_SCHED_SCHED_GETPARAM_H
 #define LLVM_LIBC_SRC_SCHED_SCHED_GETPARAM_H
 
-#include "src/__support/macros/config.h"
-#include "hdr/types/cpu_set_t.h"
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
+#include "hdr/types/pid_t.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_getscheduler.h b/libc/src/sched/sched_getscheduler.h
index 970b96097d33d1d..a250132445656ac 100644
--- a/libc/src/sched/sched_getscheduler.h
+++ b/libc/src/sched/sched_getscheduler.h
@@ -9,8 +9,8 @@
 #ifndef LLVM_LIBC_SRC_SCHED_SCHED_GETSCHEDULER_H
 #define LLVM_LIBC_SRC_SCHED_SCHED_GETSCHEDULER_H
 
-#include "src/__support/macros/config.h"
-#include "hdr/types/cpu_set_t.h"
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
+#include "hdr/types/pid_t.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_rr_get_interval.h b/libc/src/sched/sched_rr_get_interval.h
index b8bf17497cb3292..73997a9efefce1a 100644
--- a/libc/src/sched/sched_rr_get_interval.h
+++ b/libc/src/sched/sched_rr_get_interval.h
@@ -9,8 +9,9 @@
 #ifndef LLVM_LIBC_SRC_SCHED_SCHED_RR_GET_INTERVAL_H
 #define LLVM_LIBC_SRC_SCHED_SCHED_RR_GET_INTERVAL_H
 
-#include "src/__support/macros/config.h"
-#include "hdr/types/cpu_set_t.h"
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
+#include "hdr/types/pid_t.h"
+#include "hdr/types/struct_timespec.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_setaffinity.h b/libc/src/sched/sched_setaffinity.h
index 368aac0cc5bf98b..4612eafc222e34b 100644
--- a/libc/src/sched/sched_setaffinity.h
+++ b/libc/src/sched/sched_setaffinity.h
@@ -9,8 +9,10 @@
 #ifndef LLVM_LIBC_SRC_SCHED_SCHED_SETAFFINITY_H
 #define LLVM_LIBC_SRC_SCHED_SCHED_SETAFFINITY_H
 
-#include "src/__support/macros/config.h"
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 #include "hdr/types/cpu_set_t.h"
+#include "hdr/types/pid_t.h"
+#include "hdr/types/size_t.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_setparam.h b/libc/src/sched/sched_setparam.h
index cf5b2840c4551f7..b08b8409657d922 100644
--- a/libc/src/sched/sched_setparam.h
+++ b/libc/src/sched/sched_setparam.h
@@ -9,8 +9,9 @@
 #ifndef LLVM_LIBC_SRC_SCHED_SCHED_SETPARAM_H
 #define LLVM_LIBC_SRC_SCHED_SCHED_SETPARAM_H
 
-#include "src/__support/macros/config.h"
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 #include "hdr/types/cpu_set_t.h"
+#include "hdr/types/pid_t.h"
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_setscheduler.h b/libc/src/sched/sched_setscheduler.h
index 5c99aa2d10a004a..085ada2d9bbad70 100644
--- a/libc/src/sched/sched_setscheduler.h
+++ b/libc/src/sched/sched_setscheduler.h
@@ -9,8 +9,8 @@
 #ifndef LLVM_LIBC_SRC_SCHED_SCHED_SETSCHEDULER_H
 #define LLVM_LIBC_SRC_SCHED_SCHED_SETSCHEDULER_H
 
-#include "src/__support/macros/config.h"
-#include "hdr/types/cpu_set_t.h"
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
+#include "hdr/types/pid_t.h"
 
 namespace LIBC_NAMESPACE_DECL {
 

>From 00b5943cb279d64e4d15849ca75a453afd417e54 Mon Sep 17 00:00:00 2001
From: krishna2803 <kpandey81930 at gmail.com>
Date: Tue, 11 Feb 2025 20:17:11 +0530
Subject: [PATCH 05/12] fix: update CMakeLists for proxy header dependencies

Signed-off-by: krishna2803 <kpandey81930 at gmail.com>
---
 libc/hdr/types/CMakeLists.txt       |  8 ++++++++
 libc/src/sched/linux/CMakeLists.txt | 14 ++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/libc/hdr/types/CMakeLists.txt b/libc/hdr/types/CMakeLists.txt
index dfc90009ef54a81..9e5f13e022cdb51 100644
--- a/libc/hdr/types/CMakeLists.txt
+++ b/libc/hdr/types/CMakeLists.txt
@@ -241,6 +241,14 @@ add_proxy_header_library(
     libc.include.stdio
 )
 
+add_proxy_header_library(
+  cpu_set_t
+  HDRS
+    cpu_set_t.h
+  FULL_BUILD_DEPENDS
+    libc.include.llvm-libc-types.cpu_set_t
+)
+
 add_proxy_header_library(
   locale_t
   HDRS
diff --git a/libc/src/sched/linux/CMakeLists.txt b/libc/src/sched/linux/CMakeLists.txt
index ac95bf85da534ff..97657e4a4088947 100644
--- a/libc/src/sched/linux/CMakeLists.txt
+++ b/libc/src/sched/linux/CMakeLists.txt
@@ -6,6 +6,9 @@ add_entrypoint_object(
     ../sched_getaffinity.h
   DEPENDS
     libc.include.sched
+    libc.hdr.types.cpu_set_t
+    libc.hdr.types.pid_t
+    libc.hdr.types.size_t
     libc.src.__support.OSUtil.osutil
     libc.src.errno.errno
 )
@@ -18,6 +21,9 @@ add_entrypoint_object(
     ../sched_setaffinity.h
   DEPENDS
     libc.include.sched
+    libc.hdr.types.cpu_set_t
+    libc.hdr.types.pid_t
+    libc.hdr.types.size_t
     libc.src.__support.OSUtil.osutil
     libc.src.errno.errno
 )
@@ -29,6 +35,8 @@ add_entrypoint_object(
   HDRS
     ../sched_getcpucount.h
   DEPENDS
+    libc.hdr.types.cpu_set_t
+    libc.hdr.types.size_t
     libc.include.sched
   )
 
@@ -54,6 +62,7 @@ add_entrypoint_object(
     libc.include.sys_syscall
     libc.include.time
     libc.include.sched
+    libc.hdr.types.pid_t
     libc.src.__support.OSUtil.osutil
     libc.src.errno.errno
 )
@@ -68,6 +77,7 @@ add_entrypoint_object(
     libc.include.sys_syscall
     libc.include.time
     libc.include.sched
+    libc.hdr.types.pid_t
     libc.src.__support.OSUtil.osutil
     libc.src.errno.errno
 )
@@ -82,6 +92,7 @@ add_entrypoint_object(
     libc.include.sys_syscall
     libc.include.time
     libc.include.sched
+    libc.hdr.types.pid_t
     libc.src.__support.OSUtil.osutil
     libc.src.errno.errno
 )
@@ -94,6 +105,7 @@ add_entrypoint_object(
     ../sched_getscheduler.h
   DEPENDS
     libc.include.sched
+    libc.hdr.types.pid_t
     libc.include.sys_syscall
     libc.src.__support.OSUtil.osutil
     libc.src.errno.errno
@@ -132,6 +144,8 @@ add_entrypoint_object(
   DEPENDS
     libc.include.sys_syscall
     libc.include.sched
+    libc.hdr.types.pid_t
+    libc.hdr.types.struct_timespec
     libc.src.__support.OSUtil.osutil
     libc.src.errno.errno
 )

>From 8c990d273759f170c1376eb3d7a40aba2a90e559 Mon Sep 17 00:00:00 2001
From: krishna2803 <kpandey81930 at gmail.com>
Date: Tue, 11 Feb 2025 20:28:33 +0530
Subject: [PATCH 06/12] style: clang-format

Signed-off-by: krishna2803 <kpandey81930 at gmail.com>
---
 libc/src/sched/linux/sched_getaffinity.cpp     | 4 ++--
 libc/src/sched/linux/sched_getcpucount.cpp     | 2 +-
 libc/src/sched/linux/sched_getparam.cpp        | 4 ++--
 libc/src/sched/linux/sched_getscheduler.cpp    | 4 ++--
 libc/src/sched/linux/sched_rr_get_interval.cpp | 4 ++--
 libc/src/sched/linux/sched_setaffinity.cpp     | 4 ++--
 libc/src/sched/linux/sched_setparam.cpp        | 4 ++--
 libc/src/sched/linux/sched_setscheduler.cpp    | 4 ++--
 libc/src/sched/sched_getaffinity.h             | 4 ++--
 libc/src/sched/sched_getcpucount.h             | 2 +-
 libc/src/sched/sched_getparam.h                | 2 +-
 libc/src/sched/sched_getscheduler.h            | 2 +-
 libc/src/sched/sched_rr_get_interval.h         | 2 +-
 libc/src/sched/sched_setaffinity.h             | 2 +-
 libc/src/sched/sched_setparam.h                | 2 +-
 libc/src/sched/sched_setscheduler.h            | 2 +-
 16 files changed, 24 insertions(+), 24 deletions(-)

diff --git a/libc/src/sched/linux/sched_getaffinity.cpp b/libc/src/sched/linux/sched_getaffinity.cpp
index aa34b96e14eb3e8..6545411dc8405cd 100644
--- a/libc/src/sched/linux/sched_getaffinity.cpp
+++ b/libc/src/sched/linux/sched_getaffinity.cpp
@@ -9,8 +9,8 @@
 #include "src/sched/sched_getaffinity.h"
 
 #include "src/__support/OSUtil/syscall.h" // For internal syscall function.
-#include "src/__support/common.h" // LLVM_LIBC_FUNCTION
-#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
+#include "src/__support/common.h"         // LLVM_LIBC_FUNCTION
+#include "src/__support/macros/config.h"  // LIBC_NAMESPACE_DECL
 #include "src/errno/libc_errno.h"
 
 #include "hdr/types/cpu_set_t.h"
diff --git a/libc/src/sched/linux/sched_getcpucount.cpp b/libc/src/sched/linux/sched_getcpucount.cpp
index 28945476691ce35..65c9148246cc50a 100644
--- a/libc/src/sched/linux/sched_getcpucount.cpp
+++ b/libc/src/sched/linux/sched_getcpucount.cpp
@@ -8,7 +8,7 @@
 
 #include "src/sched/sched_getcpucount.h"
 
-#include "src/__support/common.h" // LLVM_LIBC_FUNCTION
+#include "src/__support/common.h"        // LLVM_LIBC_FUNCTION
 #include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 
 #include "hdr/types/cpu_set_t.h"
diff --git a/libc/src/sched/linux/sched_getparam.cpp b/libc/src/sched/linux/sched_getparam.cpp
index 38ce720ef9e9d73..f160fe0e4092787 100644
--- a/libc/src/sched/linux/sched_getparam.cpp
+++ b/libc/src/sched/linux/sched_getparam.cpp
@@ -9,8 +9,8 @@
 #include "src/sched/sched_getparam.h"
 
 #include "src/__support/OSUtil/syscall.h" // For internal syscall function.
-#include "src/__support/common.h" // LLVM_LIBC_FUNCTION
-#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
+#include "src/__support/common.h"         // LLVM_LIBC_FUNCTION
+#include "src/__support/macros/config.h"  // LIBC_NAMESPACE_DECL
 #include "src/errno/libc_errno.h"
 
 #include "hdr/types/pid_t.h"
diff --git a/libc/src/sched/linux/sched_getscheduler.cpp b/libc/src/sched/linux/sched_getscheduler.cpp
index 7be5c72aa765a61..1f2a548345a50c6 100644
--- a/libc/src/sched/linux/sched_getscheduler.cpp
+++ b/libc/src/sched/linux/sched_getscheduler.cpp
@@ -9,8 +9,8 @@
 #include "src/sched/sched_getscheduler.h"
 
 #include "src/__support/OSUtil/syscall.h" // For internal syscall function.
-#include "src/__support/common.h" // LLVM_LIBC_FUNCTION
-#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
+#include "src/__support/common.h"         // LLVM_LIBC_FUNCTION
+#include "src/__support/macros/config.h"  // LIBC_NAMESPACE_DECL
 #include "src/errno/libc_errno.h"
 
 #include "hdr/types/pid_t.h"
diff --git a/libc/src/sched/linux/sched_rr_get_interval.cpp b/libc/src/sched/linux/sched_rr_get_interval.cpp
index 42b9ea87df3b502..8763081753d6d6e 100644
--- a/libc/src/sched/linux/sched_rr_get_interval.cpp
+++ b/libc/src/sched/linux/sched_rr_get_interval.cpp
@@ -9,8 +9,8 @@
 #include "src/sched/sched_rr_get_interval.h"
 
 #include "src/__support/OSUtil/syscall.h" // For internal syscall function.
-#include "src/__support/common.h" // LLVM_LIBC_FUNCTION
-#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
+#include "src/__support/common.h"         // LLVM_LIBC_FUNCTION
+#include "src/__support/macros/config.h"  // LIBC_NAMESPACE_DECL
 #include "src/errno/libc_errno.h"
 
 #include "hdr/types/pid_t.h"
diff --git a/libc/src/sched/linux/sched_setaffinity.cpp b/libc/src/sched/linux/sched_setaffinity.cpp
index a8f0a4d70e7c445..6fa61fc817b52c9 100644
--- a/libc/src/sched/linux/sched_setaffinity.cpp
+++ b/libc/src/sched/linux/sched_setaffinity.cpp
@@ -9,8 +9,8 @@
 #include "src/sched/sched_setaffinity.h"
 
 #include "src/__support/OSUtil/syscall.h" // For internal syscall function.
-#include "src/__support/common.h" // LLVM_LIBC_FUNCTION
-#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
+#include "src/__support/common.h"         // LLVM_LIBC_FUNCTION
+#include "src/__support/macros/config.h"  // LIBC_NAMESPACE_DECL
 #include "src/errno/libc_errno.h"
 
 #include "hdr/types/cpu_set_t.h"
diff --git a/libc/src/sched/linux/sched_setparam.cpp b/libc/src/sched/linux/sched_setparam.cpp
index 0051c272003e89d..643848e4f0a51fc 100644
--- a/libc/src/sched/linux/sched_setparam.cpp
+++ b/libc/src/sched/linux/sched_setparam.cpp
@@ -9,8 +9,8 @@
 #include "src/sched/sched_setparam.h"
 
 #include "src/__support/OSUtil/syscall.h" // For internal syscall function.
-#include "src/__support/common.h" // LLVM_LIBC_FUNCTION
-#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
+#include "src/__support/common.h"         // LLVM_LIBC_FUNCTION
+#include "src/__support/macros/config.h"  // LIBC_NAMESPACE_DECL
 #include "src/errno/libc_errno.h"
 
 #include "hdr/types/pid_t.h"
diff --git a/libc/src/sched/linux/sched_setscheduler.cpp b/libc/src/sched/linux/sched_setscheduler.cpp
index 0f867230a45de42..4306476f1f5df7d 100644
--- a/libc/src/sched/linux/sched_setscheduler.cpp
+++ b/libc/src/sched/linux/sched_setscheduler.cpp
@@ -9,8 +9,8 @@
 #include "src/sched/sched_setscheduler.h"
 
 #include "src/__support/OSUtil/syscall.h" // For internal syscall function.
-#include "src/__support/common.h" // LLVM_LIBC_FUNCTION
-#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
+#include "src/__support/common.h"         // LLVM_LIBC_FUNCTION
+#include "src/__support/macros/config.h"  // LIBC_NAMESPACE_DECL
 #include "src/errno/libc_errno.h"
 
 #include "hdr/types/pid_t.h"
diff --git a/libc/src/sched/sched_getaffinity.h b/libc/src/sched/sched_getaffinity.h
index 03ce790717080f7..da6fe19e59e93e4 100644
--- a/libc/src/sched/sched_getaffinity.h
+++ b/libc/src/sched/sched_getaffinity.h
@@ -9,10 +9,10 @@
 #ifndef LLVM_LIBC_SRC_SCHED_SCHED_GETAFFINITY_H
 #define LLVM_LIBC_SRC_SCHED_SCHED_GETAFFINITY_H
 
-#include "src/__support/macros/config.h"    // LIBC_NAMESPACE_DECL
 #include "hdr/types/cpu_set_t.h"
-#include "hdr/types/size_t.h"
 #include "hdr/types/pid_t.h"
+#include "hdr/types/size_t.h"
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_getcpucount.h b/libc/src/sched/sched_getcpucount.h
index d57b779991c2f46..a01d0b3cfa5a6b6 100644
--- a/libc/src/sched/sched_getcpucount.h
+++ b/libc/src/sched/sched_getcpucount.h
@@ -9,9 +9,9 @@
 #ifndef LLVM_LIBC_SRC_SCHED_SCHED_GETCPUCOUNT_H
 #define LLVM_LIBC_SRC_SCHED_SCHED_GETCPUCOUNT_H
 
-#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 #include "hdr/types/cpu_set_t.h"
 #include "hdr/types/size_t.h"
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_getparam.h b/libc/src/sched/sched_getparam.h
index 28c75619bee9292..d92614c5a1e71ce 100644
--- a/libc/src/sched/sched_getparam.h
+++ b/libc/src/sched/sched_getparam.h
@@ -9,8 +9,8 @@
 #ifndef LLVM_LIBC_SRC_SCHED_SCHED_GETPARAM_H
 #define LLVM_LIBC_SRC_SCHED_SCHED_GETPARAM_H
 
-#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 #include "hdr/types/pid_t.h"
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_getscheduler.h b/libc/src/sched/sched_getscheduler.h
index a250132445656ac..97e70fed495175e 100644
--- a/libc/src/sched/sched_getscheduler.h
+++ b/libc/src/sched/sched_getscheduler.h
@@ -9,8 +9,8 @@
 #ifndef LLVM_LIBC_SRC_SCHED_SCHED_GETSCHEDULER_H
 #define LLVM_LIBC_SRC_SCHED_SCHED_GETSCHEDULER_H
 
-#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 #include "hdr/types/pid_t.h"
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_rr_get_interval.h b/libc/src/sched/sched_rr_get_interval.h
index 73997a9efefce1a..b67b44bf7e19fdf 100644
--- a/libc/src/sched/sched_rr_get_interval.h
+++ b/libc/src/sched/sched_rr_get_interval.h
@@ -9,9 +9,9 @@
 #ifndef LLVM_LIBC_SRC_SCHED_SCHED_RR_GET_INTERVAL_H
 #define LLVM_LIBC_SRC_SCHED_SCHED_RR_GET_INTERVAL_H
 
-#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 #include "hdr/types/pid_t.h"
 #include "hdr/types/struct_timespec.h"
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_setaffinity.h b/libc/src/sched/sched_setaffinity.h
index 4612eafc222e34b..7d5c50762512e66 100644
--- a/libc/src/sched/sched_setaffinity.h
+++ b/libc/src/sched/sched_setaffinity.h
@@ -9,10 +9,10 @@
 #ifndef LLVM_LIBC_SRC_SCHED_SCHED_SETAFFINITY_H
 #define LLVM_LIBC_SRC_SCHED_SCHED_SETAFFINITY_H
 
-#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 #include "hdr/types/cpu_set_t.h"
 #include "hdr/types/pid_t.h"
 #include "hdr/types/size_t.h"
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_setparam.h b/libc/src/sched/sched_setparam.h
index b08b8409657d922..21d5123cd1af2e9 100644
--- a/libc/src/sched/sched_setparam.h
+++ b/libc/src/sched/sched_setparam.h
@@ -9,9 +9,9 @@
 #ifndef LLVM_LIBC_SRC_SCHED_SCHED_SETPARAM_H
 #define LLVM_LIBC_SRC_SCHED_SCHED_SETPARAM_H
 
-#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 #include "hdr/types/cpu_set_t.h"
 #include "hdr/types/pid_t.h"
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 
 namespace LIBC_NAMESPACE_DECL {
 
diff --git a/libc/src/sched/sched_setscheduler.h b/libc/src/sched/sched_setscheduler.h
index 085ada2d9bbad70..0575f848e831387 100644
--- a/libc/src/sched/sched_setscheduler.h
+++ b/libc/src/sched/sched_setscheduler.h
@@ -9,8 +9,8 @@
 #ifndef LLVM_LIBC_SRC_SCHED_SCHED_SETSCHEDULER_H
 #define LLVM_LIBC_SRC_SCHED_SCHED_SETSCHEDULER_H
 
-#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 #include "hdr/types/pid_t.h"
+#include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 
 namespace LIBC_NAMESPACE_DECL {
 

>From 926702cbc9cd09b5d4470a8459306b2c5ab0cf73 Mon Sep 17 00:00:00 2001
From: krishna2803 <kpandey81930 at gmail.com>
Date: Tue, 11 Feb 2025 21:11:52 +0530
Subject: [PATCH 07/12] fix: add proxy headers for unittests

Signed-off-by: krishna2803 <kpandey81930 at gmail.com>
---
 libc/test/src/sched/CMakeLists.txt     | 4 ++++
 libc/test/src/sched/affinity_test.cpp  | 2 ++
 libc/test/src/sched/cpu_count_test.cpp | 2 ++
 3 files changed, 8 insertions(+)

diff --git a/libc/test/src/sched/CMakeLists.txt b/libc/test/src/sched/CMakeLists.txt
index 9dda4ea16e101c7..06a31b57abbcb0c 100644
--- a/libc/test/src/sched/CMakeLists.txt
+++ b/libc/test/src/sched/CMakeLists.txt
@@ -8,6 +8,8 @@ add_libc_unittest(
     affinity_test.cpp
   DEPENDS
     libc.include.sched
+    libc.hdr.types.cpu_set_t
+    libc.hdr.types.pid_t
     libc.include.sys_syscall
     libc.src.__support.OSUtil.osutil
     libc.src.errno.errno
@@ -82,6 +84,8 @@ add_libc_unittest(
     cpu_count_test.cpp
   DEPENDS
     libc.include.sched
+    libc.hdr.types.cpu_set_t
+    libc.hdr.types.pid_t
     libc.include.sys_syscall
     libc.src.__support.OSUtil.osutil
     libc.src.errno.errno
diff --git a/libc/test/src/sched/affinity_test.cpp b/libc/test/src/sched/affinity_test.cpp
index 5f7d6571b481e51..d0bf7816bc212d9 100644
--- a/libc/test/src/sched/affinity_test.cpp
+++ b/libc/test/src/sched/affinity_test.cpp
@@ -13,6 +13,8 @@
 #include "test/UnitTest/ErrnoSetterMatcher.h"
 
 #include "hdr/types/cpu_set_t.h"
+#include "hdr/types/pid_t.h"
+
 #include <sys/syscall.h>
 
 TEST(LlvmLibcSchedAffinityTest, SmokeTest) {
diff --git a/libc/test/src/sched/cpu_count_test.cpp b/libc/test/src/sched/cpu_count_test.cpp
index b0c7cfe8614a05c..adc815aaa18444d 100644
--- a/libc/test/src/sched/cpu_count_test.cpp
+++ b/libc/test/src/sched/cpu_count_test.cpp
@@ -13,6 +13,8 @@
 #include "test/UnitTest/ErrnoSetterMatcher.h"
 
 #include "hdr/types/cpu_set_t.h"
+#include "hdr/types/pid_t.h"
+
 #include <sys/syscall.h>
 
 TEST(LlvmLibcSchedCpuCountTest, SmokeTest) {

>From 02b5e6c1e2abe00b78115afee25b29a639cd6368 Mon Sep 17 00:00:00 2001
From: krishna2803 <kpandey81930 at gmail.com>
Date: Tue, 11 Feb 2025 23:16:26 +0530
Subject: [PATCH 08/12] fix: add proxy header for `struct_sched_param`

Signed-off-by: krishna2803 <kpandey81930 at gmail.com>
---
 libc/hdr/types/CMakeLists.txt               |  8 ++++++++
 libc/hdr/types/struct_sched_param.h         | 22 +++++++++++++++++++++
 libc/src/sched/linux/CMakeLists.txt         |  3 +++
 libc/src/sched/linux/sched_getparam.cpp     |  1 +
 libc/src/sched/linux/sched_setparam.cpp     |  1 +
 libc/src/sched/linux/sched_setscheduler.cpp |  1 +
 libc/src/sched/sched_getparam.h             |  1 +
 libc/src/sched/sched_setparam.h             |  1 +
 libc/src/sched/sched_setscheduler.h         |  1 +
 9 files changed, 39 insertions(+)
 create mode 100644 libc/hdr/types/struct_sched_param.h

diff --git a/libc/hdr/types/CMakeLists.txt b/libc/hdr/types/CMakeLists.txt
index 9e5f13e022cdb51..04bca694dd98949 100644
--- a/libc/hdr/types/CMakeLists.txt
+++ b/libc/hdr/types/CMakeLists.txt
@@ -366,3 +366,11 @@ add_proxy_header_library(
   FULL_BUILD_DEPENDS
     libc.include.llvm-libc-types.struct_pollfd
 )
+
+add_proxy_header_library(
+  struct_sched_param
+  HDRS
+    struct_sched_param.h
+  FULL_BUILD_DEPENDS
+    libc.include.llvm-libc-types.struct_sched_param
+)
diff --git a/libc/hdr/types/struct_sched_param.h b/libc/hdr/types/struct_sched_param.h
new file mode 100644
index 000000000000000..ec96828a6e2f1da
--- /dev/null
+++ b/libc/hdr/types/struct_sched_param.h
@@ -0,0 +1,22 @@
+//===-- Proxy for struct_sched_param --------------------------------------===//
+//
+// 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_HDR_TYPES_STRUCT_SCHED_PARAM_H
+#define LLVM_LIBC_HDR_TYPES_STRUCT_SCHED_PARAM_H
+
+#ifdef LIBC_FULL_BUILD
+
+#include "include/llvm-libc-types/struct_sched_param.h"
+
+#else // Overlay mode
+
+#include <sched.h>
+
+#endif // LLVM_LIBC_FULL_BUILD
+
+#endif // LLVM_LIBC_HDR_TYPES_STRUCT_SCHED_PARAM_H
diff --git a/libc/src/sched/linux/CMakeLists.txt b/libc/src/sched/linux/CMakeLists.txt
index 97657e4a4088947..035afabe18f0386 100644
--- a/libc/src/sched/linux/CMakeLists.txt
+++ b/libc/src/sched/linux/CMakeLists.txt
@@ -63,6 +63,7 @@ add_entrypoint_object(
     libc.include.time
     libc.include.sched
     libc.hdr.types.pid_t
+    libc.hdr.types.struct_sched_param
     libc.src.__support.OSUtil.osutil
     libc.src.errno.errno
 )
@@ -78,6 +79,7 @@ add_entrypoint_object(
     libc.include.time
     libc.include.sched
     libc.hdr.types.pid_t
+    libc.hdr.types.struct_sched_param
     libc.src.__support.OSUtil.osutil
     libc.src.errno.errno
 )
@@ -93,6 +95,7 @@ add_entrypoint_object(
     libc.include.time
     libc.include.sched
     libc.hdr.types.pid_t
+    libc.hdr.types.struct_sched_param
     libc.src.__support.OSUtil.osutil
     libc.src.errno.errno
 )
diff --git a/libc/src/sched/linux/sched_getparam.cpp b/libc/src/sched/linux/sched_getparam.cpp
index f160fe0e4092787..c653b59d7def1b8 100644
--- a/libc/src/sched/linux/sched_getparam.cpp
+++ b/libc/src/sched/linux/sched_getparam.cpp
@@ -14,6 +14,7 @@
 #include "src/errno/libc_errno.h"
 
 #include "hdr/types/pid_t.h"
+#include "hdr/types/struct_sched_param.h"
 
 #include <sys/syscall.h> // For syscall numbers.
 
diff --git a/libc/src/sched/linux/sched_setparam.cpp b/libc/src/sched/linux/sched_setparam.cpp
index 643848e4f0a51fc..020d25e2c4c0483 100644
--- a/libc/src/sched/linux/sched_setparam.cpp
+++ b/libc/src/sched/linux/sched_setparam.cpp
@@ -14,6 +14,7 @@
 #include "src/errno/libc_errno.h"
 
 #include "hdr/types/pid_t.h"
+#include "hdr/types/struct_sched_param.h"
 
 #include <sys/syscall.h> // For syscall numbers.
 
diff --git a/libc/src/sched/linux/sched_setscheduler.cpp b/libc/src/sched/linux/sched_setscheduler.cpp
index 4306476f1f5df7d..16010b46d1fe732 100644
--- a/libc/src/sched/linux/sched_setscheduler.cpp
+++ b/libc/src/sched/linux/sched_setscheduler.cpp
@@ -14,6 +14,7 @@
 #include "src/errno/libc_errno.h"
 
 #include "hdr/types/pid_t.h"
+#include "hdr/types/struct_sched_param.h"
 
 #include <sys/syscall.h> // For syscall numbers.
 
diff --git a/libc/src/sched/sched_getparam.h b/libc/src/sched/sched_getparam.h
index d92614c5a1e71ce..febd65010ede4fd 100644
--- a/libc/src/sched/sched_getparam.h
+++ b/libc/src/sched/sched_getparam.h
@@ -10,6 +10,7 @@
 #define LLVM_LIBC_SRC_SCHED_SCHED_GETPARAM_H
 
 #include "hdr/types/pid_t.h"
+#include "hdr/types/struct_sched_param.h"
 #include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 
 namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/sched/sched_setparam.h b/libc/src/sched/sched_setparam.h
index 21d5123cd1af2e9..cb4af9ccb13d71d 100644
--- a/libc/src/sched/sched_setparam.h
+++ b/libc/src/sched/sched_setparam.h
@@ -11,6 +11,7 @@
 
 #include "hdr/types/cpu_set_t.h"
 #include "hdr/types/pid_t.h"
+#include "hdr/types/struct_sched_param.h"
 #include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 
 namespace LIBC_NAMESPACE_DECL {
diff --git a/libc/src/sched/sched_setscheduler.h b/libc/src/sched/sched_setscheduler.h
index 0575f848e831387..4fd69fd88d9971b 100644
--- a/libc/src/sched/sched_setscheduler.h
+++ b/libc/src/sched/sched_setscheduler.h
@@ -10,6 +10,7 @@
 #define LLVM_LIBC_SRC_SCHED_SCHED_SETSCHEDULER_H
 
 #include "hdr/types/pid_t.h"
+#include "hdr/types/struct_sched_param.h"
 #include "src/__support/macros/config.h" // LIBC_NAMESPACE_DECL
 
 namespace LIBC_NAMESPACE_DECL {

>From 99ee89dd95e498859ee5d4ac72bbc000e566d6b2 Mon Sep 17 00:00:00 2001
From: krishna2803 <kpandey81930 at gmail.com>
Date: Tue, 11 Feb 2025 23:18:27 +0530
Subject: [PATCH 09/12] fix: add proxy header for `sched_macros`

Signed-off-by: krishna2803 <kpandey81930 at gmail.com>
---
 libc/hdr/CMakeLists.txt |  8 ++++++++
 libc/hdr/sched_macros.h | 22 ++++++++++++++++++++++
 2 files changed, 30 insertions(+)
 create mode 100644 libc/hdr/sched_macros.h

diff --git a/libc/hdr/CMakeLists.txt b/libc/hdr/CMakeLists.txt
index 7f523c50e869433..ca111d424cd9531 100644
--- a/libc/hdr/CMakeLists.txt
+++ b/libc/hdr/CMakeLists.txt
@@ -205,5 +205,13 @@ add_proxy_header_library(
     libc.include.wchar
 )
 
+add_proxy_header_library(
+  sched_macros
+  HDRS
+    sched_macros.h
+  FULL_BUILD_DEPENDS
+    libc.include.llvm-libc-macros.sched_macros
+)
+
 add_subdirectory(types)
 add_subdirectory(func)
diff --git a/libc/hdr/sched_macros.h b/libc/hdr/sched_macros.h
new file mode 100644
index 000000000000000..cfeaa99796786ec
--- /dev/null
+++ b/libc/hdr/sched_macros.h
@@ -0,0 +1,22 @@
+//===-- Definition of macros from sched.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_HDR_SCHED_MACROS_H
+#define LLVM_LIBC_HDR_SCHED_MACROS_H
+
+#ifdef LIBC_FULL_BUILD
+
+#include "include/llvm-libc-macros/sched-macros.h"
+
+#else // Overlay mode
+
+#include <sched.h>
+
+#endif // LLVM_LIBC_FULL_BUILD
+
+#endif // LLVM_LIBC_HDR_SCHED_MACROS_H

>From 5a91cde83f555fe471f958075727638fb019d30c Mon Sep 17 00:00:00 2001
From: krishna2803 <kpandey81930 at gmail.com>
Date: Tue, 11 Feb 2025 23:19:13 +0530
Subject: [PATCH 10/12] fix: tests for sched functions

Signed-off-by: krishna2803 <kpandey81930 at gmail.com>
---
 libc/test/src/sched/CMakeLists.txt                 | 5 +++++
 libc/test/src/sched/get_priority_test.cpp          | 2 +-
 libc/test/src/sched/param_and_scheduler_test.cpp   | 3 ++-
 libc/test/src/sched/sched_rr_get_interval_test.cpp | 3 ++-
 4 files changed, 10 insertions(+), 3 deletions(-)

diff --git a/libc/test/src/sched/CMakeLists.txt b/libc/test/src/sched/CMakeLists.txt
index 06a31b57abbcb0c..06dc8a58637c874 100644
--- a/libc/test/src/sched/CMakeLists.txt
+++ b/libc/test/src/sched/CMakeLists.txt
@@ -37,6 +37,7 @@ add_libc_unittest(
     get_priority_test.cpp
   DEPENDS
     libc.include.sched
+    libc.hdr.sched_macros
     libc.src.errno.errno
     libc.src.sched.sched_get_priority_min
     libc.src.sched.sched_get_priority_max
@@ -50,6 +51,8 @@ add_libc_unittest(
     param_and_scheduler_test.cpp
   DEPENDS
     libc.include.sched
+    libc.hdr.types.struct_sched_param
+    libc.hdr.sched_macros
     libc.src.errno.errno
     libc.src.sched.sched_getscheduler
     libc.src.sched.sched_setscheduler
@@ -68,6 +71,8 @@ add_libc_unittest(
     sched_rr_get_interval_test.cpp
   DEPENDS
     libc.include.sched
+    libc.hdr.types.struct_sched_param
+    libc.hdr.sched_macros
     libc.src.errno.errno
     libc.src.sched.sched_getscheduler
     libc.src.sched.sched_setscheduler
diff --git a/libc/test/src/sched/get_priority_test.cpp b/libc/test/src/sched/get_priority_test.cpp
index fe437cda4d7b6c1..9e65e4c7d5d7e9f 100644
--- a/libc/test/src/sched/get_priority_test.cpp
+++ b/libc/test/src/sched/get_priority_test.cpp
@@ -11,7 +11,7 @@
 #include "src/sched/sched_get_priority_min.h"
 #include "test/UnitTest/Test.h"
 
-#include "hdr/types/cpu_set_t.h"
+#include "hdr/sched_macros.h"
 
 TEST(LlvmLibcSchedGetPriorityTest, HandleBadPolicyTest) {
 
diff --git a/libc/test/src/sched/param_and_scheduler_test.cpp b/libc/test/src/sched/param_and_scheduler_test.cpp
index c5d6217e75b3210..7b4dee9c2824020 100644
--- a/libc/test/src/sched/param_and_scheduler_test.cpp
+++ b/libc/test/src/sched/param_and_scheduler_test.cpp
@@ -16,7 +16,8 @@
 #include "src/unistd/getuid.h"
 #include "test/UnitTest/Test.h"
 
-#include "hdr/types/cpu_set_t.h"
+#include "hdr/types/struct_sched_param.h"
+#include "hdr/sched_macros.h"
 
 // We Test:
 // SCHED_OTHER, SCHED_FIFO, SCHED_RR
diff --git a/libc/test/src/sched/sched_rr_get_interval_test.cpp b/libc/test/src/sched/sched_rr_get_interval_test.cpp
index 2dadf8bd7df3a62..5db9eb21f0273fe 100644
--- a/libc/test/src/sched/sched_rr_get_interval_test.cpp
+++ b/libc/test/src/sched/sched_rr_get_interval_test.cpp
@@ -14,7 +14,8 @@
 #include "src/unistd/getuid.h"
 #include "test/UnitTest/Test.h"
 
-#include "hdr/types/cpu_set_t.h"
+#include "hdr/types/struct_sched_param.h"
+#include "hdr/sched_macros.h"
 
 TEST(LlvmLibcSchedRRGetIntervalTest, SmokeTest) {
   LIBC_NAMESPACE::libc_errno = 0;

>From 69dc4a3821e62b8335342ab6ece5b16c0811bf92 Mon Sep 17 00:00:00 2001
From: krishna2803 <kpandey81930 at gmail.com>
Date: Tue, 11 Feb 2025 23:19:59 +0530
Subject: [PATCH 11/12] style: remove underscore

Signed-off-by: krishna2803 <kpandey81930 at gmail.com>
---
 libc/hdr/types/struct_sched_param.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/libc/hdr/types/struct_sched_param.h b/libc/hdr/types/struct_sched_param.h
index ec96828a6e2f1da..b1bdcf957324384 100644
--- a/libc/hdr/types/struct_sched_param.h
+++ b/libc/hdr/types/struct_sched_param.h
@@ -1,4 +1,4 @@
-//===-- Proxy for struct_sched_param --------------------------------------===//
+//===-- Proxy for struct sched_param --------------------------------------===//
 //
 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
 // See https://llvm.org/LICENSE.txt for license information.

>From 517c75b8c6dbbfd936a761405bce7ea6cba69b12 Mon Sep 17 00:00:00 2001
From: krishna2803 <kpandey81930 at gmail.com>
Date: Tue, 11 Feb 2025 23:26:16 +0530
Subject: [PATCH 12/12] style: clang-format

Signed-off-by: krishna2803 <kpandey81930 at gmail.com>
---
 libc/test/src/sched/param_and_scheduler_test.cpp   | 2 +-
 libc/test/src/sched/sched_rr_get_interval_test.cpp | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/libc/test/src/sched/param_and_scheduler_test.cpp b/libc/test/src/sched/param_and_scheduler_test.cpp
index 7b4dee9c2824020..3e6f44d37463b0b 100644
--- a/libc/test/src/sched/param_and_scheduler_test.cpp
+++ b/libc/test/src/sched/param_and_scheduler_test.cpp
@@ -16,8 +16,8 @@
 #include "src/unistd/getuid.h"
 #include "test/UnitTest/Test.h"
 
-#include "hdr/types/struct_sched_param.h"
 #include "hdr/sched_macros.h"
+#include "hdr/types/struct_sched_param.h"
 
 // We Test:
 // SCHED_OTHER, SCHED_FIFO, SCHED_RR
diff --git a/libc/test/src/sched/sched_rr_get_interval_test.cpp b/libc/test/src/sched/sched_rr_get_interval_test.cpp
index 5db9eb21f0273fe..004f0caa004e7d6 100644
--- a/libc/test/src/sched/sched_rr_get_interval_test.cpp
+++ b/libc/test/src/sched/sched_rr_get_interval_test.cpp
@@ -14,8 +14,8 @@
 #include "src/unistd/getuid.h"
 #include "test/UnitTest/Test.h"
 
-#include "hdr/types/struct_sched_param.h"
 #include "hdr/sched_macros.h"
+#include "hdr/types/struct_sched_param.h"
 
 TEST(LlvmLibcSchedRRGetIntervalTest, SmokeTest) {
   LIBC_NAMESPACE::libc_errno = 0;



More information about the libc-commits mailing list