diff options
author | Michal Sekletár <msekleta@redhat.com> | 2020-02-17 13:50:31 +0100 |
---|---|---|
committer | Michal Sekletár <msekleta@redhat.com> | 2020-03-16 08:57:28 +0100 |
commit | e2b2fb7f566d13a3de61952b5356cd4d2eaee917 (patch) | |
tree | 3ab1e0c2ee7358be71c1197b16f95391ad7f1487 /src/shared | |
parent | 1808f76870d8368542f058b99df89cf0a4a2d011 (diff) | |
download | systemd-e2b2fb7f566d13a3de61952b5356cd4d2eaee917.tar.gz |
core: add support for setting CPUAffinity= to special "numa" value
systemd will automatically derive CPU affinity mask from NUMA node
mask.
Fixes #13248
Diffstat (limited to 'src/shared')
-rw-r--r-- | src/shared/bus-unit-util.c | 8 | ||||
-rw-r--r-- | src/shared/cpu-set-util.c | 4 |
2 files changed, 10 insertions, 2 deletions
diff --git a/src/shared/bus-unit-util.c b/src/shared/bus-unit-util.c index 98cf51aeda..a30876c1a1 100644 --- a/src/shared/bus-unit-util.c +++ b/src/shared/bus-unit-util.c @@ -29,6 +29,7 @@ #include "signal-util.h" #include "socket-util.h" #include "sort-util.h" +#include "stdio-util.h" #include "string-util.h" #include "syslog-util.h" #include "terminal-util.h" @@ -1103,6 +1104,13 @@ static int bus_append_execute_property(sd_bus_message *m, const char *field, con _cleanup_free_ uint8_t *array = NULL; size_t allocated; + if (eq && streq(eq, "numa")) { + r = sd_bus_message_append(m, "(sv)", "CPUAffinityFromNUMA", "b", true); + if (r < 0) + return bus_log_create_error(r); + return r; + } + r = parse_cpu_set(eq, &cpuset); if (r < 0) return log_error_errno(r, "Failed to parse %s value: %s", field, eq); diff --git a/src/shared/cpu-set-util.c b/src/shared/cpu-set-util.c index 97c16ebb8c..9b9238362f 100644 --- a/src/shared/cpu-set-util.c +++ b/src/shared/cpu-set-util.c @@ -131,7 +131,7 @@ int cpu_set_add_all(CPUSet *a, const CPUSet *b) { return r; } - return 0; + return 1; } int parse_cpu_set_full( @@ -216,7 +216,7 @@ int parse_cpu_set_extend( if (!old->set) { *old = cpuset; cpuset = (CPUSet) {}; - return 0; + return 1; } return cpu_set_add_all(old, &cpuset); |