relibc: add CPU_ZERO/CPU_SET/CPU_CLR/CPU_ISSET/CPU_COUNT to sched.h

This commit is contained in:
Red Bear OS
2026-07-10 10:09:10 +03:00
parent ad1cd26e35
commit 6ac9666fab
+23
View File
@@ -9,6 +9,29 @@ sys_includes = ["sys/types.h", "stdint.h"]
include_guard = "_RELIBC_SCHED_H"
after_includes = """
#include <bits/timespec.h> // for timespec
#define CPU_SETSIZE 1024
static inline void CPU_ZERO(cpu_set_t *set) {
for (int i = 0; i < 16; i++) set->__bits[i] = 0;
}
static inline void CPU_SET(int cpu, cpu_set_t *set) {
if (cpu >= 0 && cpu < CPU_SETSIZE) set->__bits[cpu / 64] |= 1ULL << (cpu % 64);
}
static inline void CPU_CLR(int cpu, cpu_set_t *set) {
if (cpu >= 0 && cpu < CPU_SETSIZE) set->__bits[cpu / 64] &= ~(1ULL << (cpu % 64));
}
static inline int CPU_ISSET(int cpu, cpu_set_t *set) {
if (cpu >= 0 && cpu < CPU_SETSIZE) return (set->__bits[cpu / 64] >> (cpu % 64)) & 1;
return 0;
}
static inline int CPU_COUNT(cpu_set_t *set) {
int count = 0;
for (int i = 0; i < 16; i++) {
unsigned long long v = set->__bits[i];
while (v) { count += v & 1; v >>= 1; }
}
return count;
}
"""
language = "C"
style = "Both"