On Mon, Jan 9, 2017 at 7:35 AM, Balakrishna Garapati
<balakrishna.garap...@linaro.org> wrote:
> 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.
>
> Signed-off-by: Balakrishna Garapati <balakrishna.garap...@linaro.org>

Reviewed-by: Bill Fischofer <bill.fischo...@linaro.org>

> ---
>  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
>

Reply via email to