This will resolve the test in ci when using cgroups. odp_hello app fails to set cpu affinity to zero all ways when cgroup doesn't include that cpu in the set.
Fixes: https://bugs.linaro.org/show_bug.cgi?id=2806 Signed-off-by: Balakrishna Garapati <balakrishna.garap...@linaro.org> --- since v2: Added link to bug example/hello/odp_hello.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/example/hello/odp_hello.c b/example/hello/odp_hello.c index 6d114ee..59a31b2 100644 --- a/example/hello/odp_hello.c +++ b/example/hello/odp_hello.c @@ -60,16 +60,29 @@ int main(int argc, char *argv[]) options_t opt; pid_t pid; cpu_set_t cpu_set; - int i; + int i, ret, first_cpu = 0, cpu; + + pid = getpid(); + ret = sched_getaffinity(pid, sizeof(cpu_set_t), &cpu_set); + if (ret < 0) { + printf("get CPU affinity failed.\n"); + return -1; + } + + for (cpu = 0; cpu < CPU_SETSIZE; cpu++) { + if (CPU_ISSET(cpu, &cpu_set)) { + first_cpu = cpu; + break; + } + } memset(&opt, 0, sizeof(opt)); - opt.cpu = 0; + opt.cpu = first_cpu; opt.num = 1; if (parse_args(argc, argv, &opt)) return -1; - pid = getpid(); CPU_ZERO(&cpu_set); CPU_SET(opt.cpu, &cpu_set); -- 1.9.1