From: Lennart Poettering Date: Mon, 13 Jul 2026 09:20:03 +0000 (+0200) Subject: process-util: introduce proc_get_timerslack() X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4d84f8fac34fd4e6de2187f34595f3db6b7fd143;p=thirdparty%2Fsystemd.git process-util: introduce proc_get_timerslack() --- diff --git a/src/basic/process-util.c b/src/basic/process-util.c index 076d403762a..e342de287b2 100644 --- a/src/basic/process-util.c +++ b/src/basic/process-util.c @@ -2296,3 +2296,13 @@ int proc_set_comm(const char *comm) { int proc_set_nnp(void) { return prctl_safe(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0); } + +nsec_t proc_get_timerslack(void) { + int r; + + r = prctl_safe(PR_GET_TIMERSLACK, 0, 0, 0, 0); + if (r < 0) + return NSEC_INFINITY; + + return r; +} diff --git a/src/basic/process-util.h b/src/basic/process-util.h index 0d956c1606a..7adb94e8b0c 100644 --- a/src/basic/process-util.h +++ b/src/basic/process-util.h @@ -260,3 +260,4 @@ int prctl_safe(int op, unsigned long arg2, unsigned long arg3, unsigned long arg int proc_set_comm(const char *comm); int proc_set_nnp(void); +nsec_t proc_get_timerslack(void); diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index 4b584038ba9..24f0897da9c 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -1,7 +1,6 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ #include -#include #include #include "alloc-util.h" @@ -66,7 +65,7 @@ static BUS_DEFINE_PROPERTY_GET_GLOBAL(property_get_version, "s", GIT_VERSION); static BUS_DEFINE_PROPERTY_GET_GLOBAL(property_get_features, "s", systemd_features); static BUS_DEFINE_PROPERTY_GET_GLOBAL(property_get_architecture, "s", architecture_to_string(uname_architecture())); static BUS_DEFINE_PROPERTY_GET2(property_get_system_state, "s", Manager, manager_state, manager_state_to_string); -static BUS_DEFINE_PROPERTY_GET_GLOBAL(property_get_timer_slack_nsec, "t", (uint64_t) prctl(PR_GET_TIMERSLACK)); +static BUS_DEFINE_PROPERTY_GET_GLOBAL(property_get_timer_slack_nsec, "t", proc_get_timerslack()); static BUS_DEFINE_PROPERTY_GET_REF(property_get_hashmap_size, "u", Hashmap *, hashmap_size); static BUS_DEFINE_PROPERTY_GET_REF(property_get_set_size, "u", Set *, set_size); static BUS_DEFINE_PROPERTY_GET(property_get_default_timeout_abort_usec, "t", Manager, manager_default_timeout_abort_usec); diff --git a/src/core/varlink-manager.c b/src/core/varlink-manager.c index b48d2124752..6855ee7553f 100644 --- a/src/core/varlink-manager.c +++ b/src/core/varlink-manager.c @@ -1,7 +1,5 @@ /* SPDX-License-Identifier: LGPL-2.1-or-later */ -#include - #include "sd-bus.h" #include "sd-varlink.h" @@ -18,6 +16,7 @@ #include "manager.h" #include "path-util.h" #include "pidref.h" +#include "process-util.h" #include "selinux-access.h" #include "set.h" #include "strv.h" @@ -118,7 +117,7 @@ static int manager_context_build_json(sd_json_variant **ret, const char *name, v JSON_BUILD_PAIR_FINITE_USEC("RuntimeWatchdogPreUSec", manager_get_watchdog(m, WATCHDOG_PRETIMEOUT)), JSON_BUILD_PAIR_STRING_NON_EMPTY("RuntimeWatchdogPreGovernor", m->watchdog_pretimeout_governor), JSON_BUILD_PAIR_STRING_NON_EMPTY("WatchdogDevice", watchdog_get_device()), - JSON_BUILD_PAIR_FINITE_USEC("TimerSlackNSec", (uint64_t) prctl(PR_GET_TIMERSLACK)), + JSON_BUILD_PAIR_FINITE_USEC("TimerSlackNSec", proc_get_timerslack()), JSON_BUILD_PAIR_ENUM("DefaultOOMPolicy", oom_policy_to_string(m->defaults.oom_policy)), SD_JSON_BUILD_PAIR_INTEGER("DefaultOOMScoreAdjust", m->defaults.oom_score_adjust), SD_JSON_BUILD_PAIR_BOOLEAN("DefaultRestrictSUIDSGID", m->defaults.restrict_suid_sgid),