diff mbox

example: hello: set cpu affinity from cgroup

Message ID 1483963391-5959-1-git-send-email-balakrishna.garapati@linaro.org
State Superseded
Headers show

Commit Message

Balakrishna Garapati Jan. 9, 2017, 12:03 p.m. UTC
This will resolve the test in ci when using cgroups
Signed-off-by: Balakrishna Garapati <balakrishna.garapati@linaro.org>

---
 example/hello/odp_hello.c | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

-- 
1.9.1

Comments

Mike Holmes Jan. 9, 2017, 12:54 p.m. UTC | #1
On 9 January 2017 at 07:03, Balakrishna Garapati <
balakrishna.garapati@linaro.org> wrote:

> This will resolve the test in ci when using cgroups

>


Can you just add a line saying what the issue was, it is easier to decided
if the patch achieves that


> Signed-off-by: Balakrishna Garapati <balakrishna.garapati@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

>

>



-- 
Mike Holmes
Program Manager - Linaro Networking Group
Linaro.org <http://www.linaro.org/> *│ *Open source software for ARM SoCs
"Work should be fun and collaborative, the rest follows"
diff mbox

Patch

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