Commit 89aca475 authored by Cyril Bur's avatar Cyril Bur Committed by Michael Ellerman

selftests/powerpc: context_switch: Fix pthread errors

Turns out pthreads returns an errno and doesn't set errno. This doesn't
play well with perror().
Signed-off-by: default avatarCyril Bur <cyrilbur@gmail.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent 8f6a9042
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
*/ */
#define _GNU_SOURCE #define _GNU_SOURCE
#include <errno.h>
#include <sched.h> #include <sched.h>
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
...@@ -75,6 +76,7 @@ static void touch(void) ...@@ -75,6 +76,7 @@ static void touch(void)
static void start_thread_on(void *(*fn)(void *), void *arg, unsigned long cpu) static void start_thread_on(void *(*fn)(void *), void *arg, unsigned long cpu)
{ {
int rc;
pthread_t tid; pthread_t tid;
cpu_set_t cpuset; cpu_set_t cpuset;
pthread_attr_t attr; pthread_attr_t attr;
...@@ -82,14 +84,23 @@ static void start_thread_on(void *(*fn)(void *), void *arg, unsigned long cpu) ...@@ -82,14 +84,23 @@ static void start_thread_on(void *(*fn)(void *), void *arg, unsigned long cpu)
CPU_ZERO(&cpuset); CPU_ZERO(&cpuset);
CPU_SET(cpu, &cpuset); CPU_SET(cpu, &cpuset);
pthread_attr_init(&attr); rc = pthread_attr_init(&attr);
if (rc) {
errno = rc;
perror("pthread_attr_init");
exit(1);
}
if (pthread_attr_setaffinity_np(&attr, sizeof(cpu_set_t), &cpuset)) { rc = pthread_attr_setaffinity_np(&attr, sizeof(cpu_set_t), &cpuset);
if (rc) {
errno = rc;
perror("pthread_attr_setaffinity_np"); perror("pthread_attr_setaffinity_np");
exit(1); exit(1);
} }
if (pthread_create(&tid, &attr, fn, arg)) { rc = pthread_create(&tid, &attr, fn, arg);
if (rc) {
errno = rc;
perror("pthread_create"); perror("pthread_create");
exit(1); exit(1);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment