mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-08-27 21:50:15 +03:00
shared/cpu-set-util: only force range printing one time
The idea is to have at least one range to make the new format clearly distinguishable from the old. But it is enough to just do it once. In particular, in case the affinity would be specified like 0, 2, 4, 6…, this gives much shorter output.
This commit is contained in:
@ -55,7 +55,10 @@ char *cpu_set_to_range_string(const CPUSet *set) {
|
||||
if (!GREEDY_REALLOC(str, allocated, len + 2 + 2 * DECIMAL_STR_MAX(unsigned)))
|
||||
return NULL;
|
||||
|
||||
r = sprintf(str + len, len > 0 ? " %d-%d" : "%d-%d", range_start, range_end);
|
||||
if (range_end > range_start || len == 0)
|
||||
r = sprintf(str + len, len > 0 ? " %d-%d" : "%d-%d", range_start, range_end);
|
||||
else
|
||||
r = sprintf(str + len, len > 0 ? " %d" : "%d", range_start);
|
||||
assert_se(r > 0);
|
||||
len += r;
|
||||
}
|
||||
@ -64,7 +67,10 @@ char *cpu_set_to_range_string(const CPUSet *set) {
|
||||
if (!GREEDY_REALLOC(str, allocated, len + 2 + 2 * DECIMAL_STR_MAX(int)))
|
||||
return NULL;
|
||||
|
||||
r = sprintf(str + len, len > 0 ? " %d-%d" : "%d-%d", range_start, range_end);
|
||||
if (range_end > range_start || len == 0)
|
||||
r = sprintf(str + len, len > 0 ? " %d-%d" : "%d-%d", range_start, range_end);
|
||||
else
|
||||
r = sprintf(str + len, len > 0 ? " %d" : "%d", range_start);
|
||||
assert_se(r > 0);
|
||||
}
|
||||
|
||||
|
@ -29,19 +29,20 @@ static void test_parse_cpu_set(void) {
|
||||
cpu_set_reset(&c);
|
||||
|
||||
/* Simple range (from CPUAffinity example) */
|
||||
assert_se(parse_cpu_set_full("1 2", &c, true, NULL, "fake", 1, "CPUAffinity") >= 0);
|
||||
assert_se(parse_cpu_set_full("1 2 4", &c, true, NULL, "fake", 1, "CPUAffinity") >= 0);
|
||||
assert_se(c.set);
|
||||
assert_se(c.allocated >= sizeof(__cpu_mask) / 8);
|
||||
assert_se(CPU_ISSET_S(1, c.allocated, c.set));
|
||||
assert_se(CPU_ISSET_S(2, c.allocated, c.set));
|
||||
assert_se(CPU_COUNT_S(c.allocated, c.set) == 2);
|
||||
assert_se(CPU_ISSET_S(4, c.allocated, c.set));
|
||||
assert_se(CPU_COUNT_S(c.allocated, c.set) == 3);
|
||||
|
||||
assert_se(str = cpu_set_to_string(&c));
|
||||
log_info("cpu_set_to_string: %s", str);
|
||||
str = mfree(str);
|
||||
assert_se(str = cpu_set_to_range_string(&c));
|
||||
log_info("cpu_set_to_range_string: %s", str);
|
||||
assert_se(streq(str, "1-2"));
|
||||
assert_se(streq(str, "1-2 4"));
|
||||
str = mfree(str);
|
||||
cpu_set_reset(&c);
|
||||
|
||||
|
Reference in New Issue
Block a user