From: Michal Sekletar Date: Wed, 22 May 2019 15:14:21 +0000 (+0200) Subject: systemctl: present CPUAffinity mask as a list of CPU index ranges X-Git-Tag: v243-rc1~340^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a047f4f10ed2f922d6079c033d24a443b0e95f38;p=thirdparty%2Fsystemd.git systemctl: present CPUAffinity mask as a list of CPU index ranges --- diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 059f7220b54..0574a9f4ceb 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -31,6 +31,7 @@ #include "cgroup-show.h" #include "cgroup-util.h" #include "copy.h" +#include "cpu-set-util.h" #include "dropin.h" #include "efivars.h" #include "env-util.h" @@ -5403,6 +5404,27 @@ static int print_property(const char *name, const char *expected_value, sd_bus_m if (all || !isempty(fields)) bus_print_property_value(name, expected_value, value, strempty(fields)); + return 1; + } else if (contents[0] == SD_BUS_TYPE_BYTE && streq(name, "CPUAffinity")) { + _cleanup_free_ char *affinity = NULL; + _cleanup_(cpu_set_reset) CPUSet set = {}; + const void *a; + size_t n; + + r = sd_bus_message_read_array(m, 'y', &a, &n); + if (r < 0) + return bus_log_parse_error(r); + + r = cpu_set_from_dbus(a, n, &set); + if (r < 0) + return log_error_errno(r, "Failed to deserialize CPUAffinity: %m"); + + affinity = cpu_set_to_range_string(&set); + if (!affinity) + return log_oom(); + + bus_print_property_value(name, expected_value, value, affinity); + return 1; }