forked from Minki/linux
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: Cyril Bur <cyrilbur@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:
parent
8f6a90421c
commit
89aca4753e
@ -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)
|
|||||||
|
|
||||||
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)
|
|||||||
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);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user