]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
systemctl: present CPUAffinity mask as a list of CPU index ranges
authorMichal Sekletar <msekleta@redhat.com>
Wed, 22 May 2019 15:14:21 +0000 (17:14 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 29 May 2019 15:02:24 +0000 (17:02 +0200)
src/systemctl/systemctl.c

index 059f7220b54c1adc4d36e9c234033a5a748cb191..0574a9f4cebc2a3ea1039c9754027ca3c4b48a6e 100644 (file)
@@ -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;
                 }