summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2019-05-28 21:38:41 +0200
committerThe Plumber <50238977+systemd-rhel-bot@users.noreply.github.com>2019-12-05 15:17:20 +0100
commit5e6b616ed2708391752ba8c45f183ceb38573d7d (patch)
treeee00992ec0ca5c6f9784449ba7cff4f477cf9524
parent0387294ba41ceaf80c79621409aab9508732bda0 (diff)
downloadsystemd-5e6b616ed2708391752ba8c45f183ceb38573d7d.tar.gz
test-execute: use CPUSet too
cpu_set_malloc() was the last user. It doesn't seem useful to keep it just to save the allocation of a few hundred bytes in a test, so it is dropped and a fixed maximum is allocated (1024 bytes). (cherry picked from commit 167a776dbe9d033523bd6881e5a695f2155dc321) Related: #1734787
-rw-r--r--src/basic/cpu-set-util.c31
-rw-r--r--src/basic/cpu-set-util.h3
-rw-r--r--src/test/test-execute.c13
3 files changed, 8 insertions, 39 deletions
diff --git a/src/basic/cpu-set-util.c b/src/basic/cpu-set-util.c
index 1803539ac6..c297eab032 100644
--- a/src/basic/cpu-set-util.c
+++ b/src/basic/cpu-set-util.c
@@ -37,36 +37,7 @@ char* cpu_set_to_string(const CPUSet *a) {
return TAKE_PTR(str) ?: strdup("");
}
-cpu_set_t* cpu_set_malloc(unsigned *ncpus) {
- cpu_set_t *c;
- unsigned n = 1024;
-
- /* Allocates the cpuset in the right size */
-
- for (;;) {
- c = CPU_ALLOC(n);
- if (!c)
- return NULL;
-
- if (sched_getaffinity(0, CPU_ALLOC_SIZE(n), c) >= 0) {
- CPU_ZERO_S(CPU_ALLOC_SIZE(n), c);
-
- if (ncpus)
- *ncpus = n;
-
- return c;
- }
-
- CPU_FREE(c);
-
- if (errno != EINVAL)
- return NULL;
-
- n *= 2;
- }
-}
-
-static int cpu_set_realloc(CPUSet *cpu_set, unsigned ncpus) {
+int cpu_set_realloc(CPUSet *cpu_set, unsigned ncpus) {
size_t need;
assert(cpu_set);
diff --git a/src/basic/cpu-set-util.h b/src/basic/cpu-set-util.h
index 9b026aca09..b54e737110 100644
--- a/src/basic/cpu-set-util.h
+++ b/src/basic/cpu-set-util.h
@@ -12,8 +12,6 @@
DEFINE_TRIVIAL_CLEANUP_FUNC(cpu_set_t*, CPU_FREE);
#define _cleanup_cpu_free_ _cleanup_(CPU_FREEp)
-cpu_set_t* cpu_set_malloc(unsigned *ncpus);
-
/* This wraps the libc interface with a variable to keep the allocated size. */
typedef struct CPUSet {
cpu_set_t *set;
@@ -30,6 +28,7 @@ static inline void cpu_set_reset(CPUSet *a) {
int cpu_set_add_all(CPUSet *a, const CPUSet *b);
char* cpu_set_to_string(const CPUSet *a);
+int cpu_set_realloc(CPUSet *cpu_set, unsigned ncpus);
int parse_cpu_set_full(
const char *rvalue,
CPUSet *cpu_set,
diff --git a/src/test/test-execute.c b/src/test/test-execute.c
index fa8efdddd2..6c22995b1e 100644
--- a/src/test/test-execute.c
+++ b/src/test/test-execute.c
@@ -144,13 +144,12 @@ static void test_exec_bindpaths(Manager *m) {
}
static void test_exec_cpuaffinity(Manager *m) {
- _cleanup_cpu_free_ cpu_set_t *c = NULL;
- unsigned n;
+ _cleanup_(cpu_set_reset) CPUSet c = {};
- assert_se(c = cpu_set_malloc(&n));
- assert_se(sched_getaffinity(0, CPU_ALLOC_SIZE(n), c) >= 0);
+ assert_se(cpu_set_realloc(&c, 8192) >= 0); /* just allocate the maximum possible size */
+ assert_se(sched_getaffinity(0, c.allocated, c.set) >= 0);
- if (CPU_ISSET_S(0, CPU_ALLOC_SIZE(n), c) == 0) {
+ if (!CPU_ISSET_S(0, c.allocated, c.set)) {
log_notice("Cannot use CPU 0, skipping %s", __func__);
return;
}
@@ -158,8 +157,8 @@ static void test_exec_cpuaffinity(Manager *m) {
test(m, "exec-cpuaffinity1.service", 0, CLD_EXITED);
test(m, "exec-cpuaffinity2.service", 0, CLD_EXITED);
- if (CPU_ISSET_S(1, CPU_ALLOC_SIZE(n), c) == 0 ||
- CPU_ISSET_S(2, CPU_ALLOC_SIZE(n), c) == 0) {
+ if (!CPU_ISSET_S(1, c.allocated, c.set) ||
+ !CPU_ISSET_S(2, c.allocated, c.set)) {
log_notice("Cannot use CPU 1 or 2, skipping remaining tests in %s", __func__);
return;
}