https://gitlab.com/ananicy-cpp/ananicy-cpp/-/commit/99e64815bacaf3baa28ad89d022e33ebede94fa9 From: Antoine Viallon Date: Thu, 3 Apr 2025 14:24:10 +0200 Subject: [PATCH] [Platform/Linux] rename sched_*attr symbols to avoid conflicts with newer GLibc versions (cherry picked from commit 6748f23c5f1eaf6c15cb771a3804e3e527015903) --- a/src/platform/linux/priority.cpp +++ b/src/platform/linux/priority.cpp @@ -185,12 +185,12 @@ std::string_view test_latnice_support() noexcept { // Use this here instead of function, // to suppress errors from function call. - struct sched_attr attr = { - .size = sizeof(struct sched_attr), + struct ananicy_sched_attr attr = { + .size = sizeof(struct ananicy_sched_attr), .sched_flags = SCHED_FLAG_LATENCY_NICE | SCHED_FLAG_KEEP_PARAMS, .sched_latency_nice = latency_nice, }; - const std::int32_t err = sched_setattr(pid, &attr, 0); + const std::int32_t err = ananicy_sched_setattr(pid, &attr, 0); bool is_supported{}; if (err == 0 && errno == 0) { set_latnice(pid, saved_latnice); --- a/src/platform/linux/process_info.cpp +++ b/src/platform/linux/process_info.cpp @@ -104,16 +104,16 @@ static std::string get_sched_policy_name(unsigned sched_policy) { } } -static sched_attr get_sched_attributes(process_id_t pid) { +static ananicy_sched_attr get_sched_attributes(process_id_t pid) { - ::sched_attr attr{}; - sched_getattr(static_cast(pid), &attr, sizeof(attr), 0); + ::ananicy_sched_attr attr{}; + ananicy_sched_getattr(static_cast(pid), &attr, sizeof(attr), 0); return attr; } bool is_realtime(process_id_t pid) { - const sched_attr attr = get_sched_attributes(pid); + const ananicy_sched_attr attr = get_sched_attributes(pid); return attr.sched_priority > 0; } --- a/src/platform/linux/syscalls.h +++ b/src/platform/linux/syscalls.h @@ -69,7 +69,7 @@ static int ioprio_get(__priority_which_t _which, id_t _who) { #define SCHED_FLAG_KEEP_POLICY 0x08 #endif -struct [[gnu::packed]] sched_attr { +struct [[gnu::packed]] ananicy_sched_attr { uint32_t size; uint32_t sched_policy; // SCHED_(FIFO,RR,DEADLINE,OTHER,BATCH,IDLE, etc.) @@ -94,20 +94,20 @@ struct [[gnu::packed]] sched_attr { int32_t sched_latency_nice; }; -static int sched_setattr(pid_t pid, const struct sched_attr *attr, +static int ananicy_sched_setattr(pid_t pid, const struct ananicy_sched_attr *attr, unsigned int flags) { return static_cast(syscall(__NR_sched_setattr, pid, attr, flags)); } -static int sched_getattr(pid_t pid, struct sched_attr *attr, unsigned int size, +static int ananicy_sched_getattr(pid_t pid, struct ananicy_sched_attr *attr, unsigned int size, unsigned int flags) { return static_cast(syscall(__NR_sched_getattr, pid, attr, size, flags)); } static int get_latnice(pid_t pid) { // pid==0 refers to calling thread - struct sched_attr attr = { .size = sizeof(struct sched_attr) }; - if (sched_getattr(pid, &attr, sizeof(attr), 0) < 0) { + struct ananicy_sched_attr attr = { .size = sizeof(struct ananicy_sched_attr) }; + if (ananicy_sched_getattr(pid, &attr, sizeof(attr), 0) < 0) { std::perror("sched_getattr"); } return attr.sched_latency_nice; // defaults to 0 @@ -115,12 +115,12 @@ static int get_latnice(pid_t pid) { static int set_latnice(pid_t pid, int latency_nice) { // pid==0 refers to calling thread - struct sched_attr attr = { - .size = sizeof(struct sched_attr), + struct ananicy_sched_attr attr = { + .size = sizeof(struct ananicy_sched_attr), .sched_flags = SCHED_FLAG_LATENCY_NICE | SCHED_FLAG_KEEP_PARAMS, .sched_latency_nice = latency_nice, }; - const int err = sched_setattr(pid, &attr, 0); + const int err = ananicy_sched_setattr(pid, &attr, 0); if (err < 0) { // sched_setattr failed if (errno == EINVAL) { -- GitLab