summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Sekletar <msekleta@redhat.com>2019-05-22 17:14:21 +0200
committerThe Plumber <50238977+systemd-rhel-bot@users.noreply.github.com>2019-12-05 15:17:20 +0100
commitfb1244ef318e9f54628a7c13db9e2ffbc712dd38 (patch)
treef3551c33d38565ee0ff81adabb3d0070ba0299fa
parent93777a6dd8c12d5cba094694bf7ed6e8c06c2d6d (diff)
downloadsystemd-fb1244ef318e9f54628a7c13db9e2ffbc712dd38.tar.gz
systemctl: present CPUAffinity mask as a list of CPU index ranges
(cherry picked from commit a047f4f10ed2f922d6079c033d24a443b0e95f38) Related: #1734787
-rw-r--r--src/systemctl/systemctl.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c
index f072ad0c31..0154b300a3 100644
--- a/src/systemctl/systemctl.c
+++ b/src/systemctl/systemctl.c
@@ -30,6 +30,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"
@@ -4877,6 +4878,27 @@ static int print_property(const char *name, sd_bus_message *m, bool value, bool
print_prop(name, "%s", h);
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();
+
+ print_prop(name, "%s", affinity);
+
+ return 1;
}
break;