]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
cpu-set-util: several cleanups for cpu_set_{from,to}_dbus()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 20 Jun 2025 21:44:39 +0000 (06:44 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 23 Jun 2025 15:20:20 +0000 (00:20 +0900)
- rename arguments,
- use SET_BIT() and BIT_SET() macros,
- explicitly (re)alloc before setting bits.

No functional change, just refactoring.

src/shared/cpu-set-util.c
src/shared/cpu-set-util.h

index a483f5cd0ffd1011309843e9e58516f64c882994..b7be99bbb605b822d3cbcd5fe9e2748aa1f74d36 100644 (file)
@@ -329,39 +329,39 @@ int cpus_in_affinity_mask(void) {
         }
 }
 
-int cpu_set_to_dbus(const CPUSet *set, uint8_t **ret, size_t *allocated) {
-        uint8_t *out;
-
-        assert(set);
+int cpu_set_to_dbus(const CPUSet *c, uint8_t **ret, size_t *ret_size) {
+        assert(c);
         assert(ret);
+        assert(ret_size);
 
-        out = new0(uint8_t, set->allocated);
-        if (!out)
+        uint8_t *buf = new0(uint8_t, c->allocated);
+        if (!buf)
                 return -ENOMEM;
 
-        for (unsigned cpu = 0; cpu < set->allocated * 8; cpu++)
-                if (CPU_ISSET_S(cpu, set->allocated, set->set))
-                        out[cpu / 8] |= 1u << (cpu % 8);
+        for (size_t i = 0; i < c->allocated * 8; i++)
+                if (CPU_ISSET_S(i, c->allocated, c->set))
+                        SET_BIT(buf[i / 8], i % 8);
 
-        *ret = out;
-        *allocated = set->allocated;
+        *ret = buf;
+        *ret_size = c->allocated;
         return 0;
 }
 
-int cpu_set_from_dbus(const uint8_t *bits, size_t size, CPUSet *set) {
-        _cleanup_(cpu_set_reset) CPUSet s = {};
+int cpu_set_from_dbus(const uint8_t *bits, size_t size, CPUSet *ret) {
+        _cleanup_(cpu_set_reset) CPUSet c = {};
         int r;
 
-        assert(bits);
-        assert(set);
+        assert(bits || size == 0);
+        assert(ret);
 
-        for (unsigned cpu = size * 8; cpu > 0; cpu--)
-                if (bits[(cpu - 1) / 8] & (1u << ((cpu - 1) % 8))) {
-                        r = cpu_set_add(&s, cpu - 1);
-                        if (r < 0)
-                                return r;
-                }
+        r = cpu_set_realloc(&c, size * 8);
+        if (r < 0)
+                return r;
+
+        for (size_t i = 0; i < size * 8; i++)
+                if (BIT_SET(bits[i / 8], i % 8))
+                        CPU_SET_S(i, c.allocated, c.set);
 
-        *set = TAKE_STRUCT(s);
+        *ret = TAKE_STRUCT(c);
         return 0;
 }
index 5532737bc9f45985f0ba1193f507a81652012783..610a2b2c7763413d5ceb5b57db2bd24c15605da4 100644 (file)
@@ -50,7 +50,7 @@ static inline int parse_cpu_set(const char *rvalue, CPUSet *cpu_set){
         return parse_cpu_set_full(rvalue, cpu_set, false, NULL, NULL, 0, NULL);
 }
 
-int cpu_set_to_dbus(const CPUSet *set, uint8_t **ret, size_t *allocated);
-int cpu_set_from_dbus(const uint8_t *bits, size_t size, CPUSet *set);
+int cpu_set_to_dbus(const CPUSet *c, uint8_t **ret, size_t *ret_size);
+int cpu_set_from_dbus(const uint8_t *bits, size_t size, CPUSet *ret);
 
 int cpus_in_affinity_mask(void);