]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
core: move cpuset_build_json() to varlink-common
authorIvan Kruglov <mail@ikruglov.com>
Mon, 7 Jul 2025 08:41:55 +0000 (01:41 -0700)
committerIvan Kruglov <mail@ikruglov.com>
Thu, 16 Oct 2025 10:52:02 +0000 (03:52 -0700)
src/core/varlink-cgroup.c
src/core/varlink-common.c
src/core/varlink-common.h

index db75560ae812b39f7ca5f172ec83e672df153ca5..d26542f03241c96c7491e85f27847f1b32d87338 100644 (file)
@@ -4,7 +4,6 @@
 
 #include "bpf-program.h"
 #include "cgroup.h"
-#include "cpu-set-util.h"
 #include "json-util.h"
 #include "in-addr-prefix-util.h"
 #include "ip-protocol-list.h"
 #include "set.h"
 #include "unit.h"
 #include "varlink-cgroup.h"
-
-static int cpu_set_build_json(sd_json_variant **ret, const char *name, void *userdata) {
-        _cleanup_free_ uint8_t *array = NULL;
-        CPUSet *cpuset = ASSERT_PTR(userdata);
-        size_t allocated;
-        int r;
-
-        assert(ret);
-        assert(name);
-
-        if (!cpuset->set)
-                goto empty;
-
-        r = cpu_set_to_dbus(cpuset, &array, &allocated);
-        if (r < 0)
-                return log_debug_errno(r, "Failed to call cpu_set_to_dbus(): %m");
-
-        if (allocated == 0)
-                goto empty;
-
-        return sd_json_variant_new_array_bytes(ret, array, allocated);
-
-empty:
-        *ret = NULL;
-        return 0;
-}
+#include "varlink-common.h"
 
 static int tasks_max_build_json(sd_json_variant **ret, const char *name, void *userdata) {
         CGroupTasksMax *tasks_max = ASSERT_PTR(userdata);
@@ -280,8 +254,8 @@ int unit_cgroup_context_build_json(sd_json_variant **ret, const char *name, void
                         JSON_BUILD_PAIR_UNSIGNED_NOT_EQUAL("StartupCPUWeight", c->startup_cpu_weight, CGROUP_WEIGHT_INVALID),
                         JSON_BUILD_PAIR_FINITE_USEC("CPUQuotaPerSecUSec", c->cpu_quota_per_sec_usec),
                         JSON_BUILD_PAIR_FINITE_USEC("CPUQuotaPeriodUSec", c->cpu_quota_period_usec),
-                        JSON_BUILD_PAIR_CALLBACK_NON_NULL("AllowedCPUs", cpu_set_build_json, &c->cpuset_cpus),
-                        JSON_BUILD_PAIR_CALLBACK_NON_NULL("StartupAllowedCPUs", cpu_set_build_json, &c->startup_cpuset_cpus),
+                        JSON_BUILD_PAIR_CALLBACK_NON_NULL("AllowedCPUs", cpuset_build_json, &c->cpuset_cpus),
+                        JSON_BUILD_PAIR_CALLBACK_NON_NULL("StartupAllowedCPUs", cpuset_build_json, &c->startup_cpuset_cpus),
 
                         /* Memory Accounting and Control */
                         SD_JSON_BUILD_PAIR_BOOLEAN("MemoryAccounting", c->memory_accounting),
@@ -300,8 +274,8 @@ int unit_cgroup_context_build_json(sd_json_variant **ret, const char *name, void
                         JSON_BUILD_PAIR_UNSIGNED_NOT_EQUAL("MemoryZSwapMax", c->memory_zswap_max, CGROUP_LIMIT_MAX),
                         JSON_BUILD_PAIR_CONDITION_UNSIGNED(c->startup_memory_zswap_max_set, "StartupMemoryZSwapMax", c->startup_memory_zswap_max),
                         SD_JSON_BUILD_PAIR_BOOLEAN("MemoryZSwapWriteback", c->memory_zswap_writeback),
-                        JSON_BUILD_PAIR_CALLBACK_NON_NULL("AllowedMemoryNodes", cpu_set_build_json, &c->cpuset_mems),
-                        JSON_BUILD_PAIR_CALLBACK_NON_NULL("StartupAllowedMemoryNodes", cpu_set_build_json, &c->startup_cpuset_mems),
+                        JSON_BUILD_PAIR_CALLBACK_NON_NULL("AllowedMemoryNodes", cpuset_build_json, &c->cpuset_mems),
+                        JSON_BUILD_PAIR_CALLBACK_NON_NULL("StartupAllowedMemoryNodes", cpuset_build_json, &c->startup_cpuset_mems),
 
                         /* Process Accounting and Control */
                         SD_JSON_BUILD_PAIR_BOOLEAN("TasksAccounting", c->tasks_accounting),
@@ -475,7 +449,7 @@ static int effective_cpuset_build_json(sd_json_variant **ret, const char *name,
         if (r < 0)
                 return log_debug_errno(r, "Failed to get cpu set '%s': %m", cpuset_name);
 
-        return cpu_set_build_json(ret, name, &cpus);
+        return cpuset_build_json(ret, name, &cpus);
 }
 
 static inline int effective_cpus_build_json(sd_json_variant **ret, const char *name, void *userdata) {
index eb3fafa2fa96ba7e82f89851c3ee246ab30bd3cb..37d82e3fe0fa85ee430bfeba5411bd4fb8deaa3c 100644 (file)
@@ -1,5 +1,6 @@
 /* SPDX-License-Identifier: LGPL-2.1-or-later */
 
+#include "cpu-set-util.h"
 #include "json-util.h"
 #include "rlimit-util.h"
 #include "varlink-common.h"
@@ -51,3 +52,28 @@ int rlimit_table_build_json(sd_json_variant **ret, const char *name, void *userd
 
         return 0;
 }
+
+int cpuset_build_json(sd_json_variant **ret, const char *name, void *userdata) {
+        _cleanup_free_ uint8_t *array = NULL;
+        CPUSet *cpuset = ASSERT_PTR(userdata);
+        size_t allocated;
+        int r;
+
+        assert(ret);
+
+        if (!cpuset->set)
+                goto empty;
+
+        r = cpu_set_to_dbus(cpuset, &array, &allocated);
+        if (r < 0)
+                return log_debug_errno(r, "Failed to serialize cpu set to dbus: %m");
+
+        if (allocated == 0)
+                goto empty;
+
+        return sd_json_variant_new_array_bytes(ret, array, allocated);
+
+empty:
+        *ret = NULL;
+        return 0;
+}
index 45b47cb6612784f9ca7da97b794a629b7b1a9993..58984e35851f7f39f3e48103eea739d6fc133162 100644 (file)
@@ -5,3 +5,4 @@
 
 int rlimit_build_json(sd_json_variant **ret, const char *name, void *userdata);
 int rlimit_table_build_json(sd_json_variant **ret, const char *name, void *userdata);
+int cpuset_build_json(sd_json_variant **ret, const char *name, void *userdata);