From: Yu Watanabe Date: Fri, 20 Jun 2025 21:44:39 +0000 (+0900) Subject: cpu-set-util: several cleanups for cpu_set_{from,to}_dbus() X-Git-Tag: v258-rc1~238^2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c4afb3c3e311ec4d09cae4f1fad56383dff3ad49;p=thirdparty%2Fsystemd.git cpu-set-util: several cleanups for cpu_set_{from,to}_dbus() - rename arguments, - use SET_BIT() and BIT_SET() macros, - explicitly (re)alloc before setting bits. No functional change, just refactoring. --- diff --git a/src/shared/cpu-set-util.c b/src/shared/cpu-set-util.c index a483f5cd0ff..b7be99bbb60 100644 --- a/src/shared/cpu-set-util.c +++ b/src/shared/cpu-set-util.c @@ -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; } diff --git a/src/shared/cpu-set-util.h b/src/shared/cpu-set-util.h index 5532737bc9f..610a2b2c776 100644 --- a/src/shared/cpu-set-util.h +++ b/src/shared/cpu-set-util.h @@ -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);