changeset 734:7e0cea8fbc3e

Use sched_{set,get}affinity directly so musl doesn't have to provide wrappers.
author Rob Landley <rob@landley.net>
date Mon, 03 Dec 2012 16:16:06 -0600
parents 0cd93dd23b8d
children 3aaba60133c8
files toys/other/taskset.c
diffstat 1 files changed, 7 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/toys/other/taskset.c	Sat Dec 01 18:30:48 2012 -0600
+++ b/toys/other/taskset.c	Mon Dec 03 16:16:06 2012 -0600
@@ -23,9 +23,11 @@
 #define FOR_taskset
 #include "toys.h"
 
-// Prototype for syscall wrappers sched.h refuses to give us
-int sched_setaffinity(pid_t pid, size_t size, void *cpuset);
-int sched_getaffinity(pid_t pid, size_t size, void *cpuset);
+#include <sys/syscall.h>
+#define sched_setaffinity(pid, size, cpuset) \
+  syscall(__NR_sched_setaffinity, (pid_t)pid, (size_t)size, (void *)cpuset)
+#define sched_getaffinity(pid, size, cpuset) \
+  syscall(__NR_sched_getaffinity, (pid_t)pid, (size_t)size, (void *)cpuset)
 
 // mask is an array of long, which makes the layout a bit weird on big
 // endian systems but as long as it's consistent...
@@ -40,7 +42,7 @@
     if (!quiet) {
       int j = sizeof(toybuf), flag = 0;
 
-      if (sched_getaffinity(pid, sizeof(toybuf), (void *)mask))
+      if (-1 == sched_getaffinity(pid, sizeof(toybuf), (void *)mask))
         perror_exit(failed, "get", pid);
 
       printf("pid %d's %s affinity mask: ", pid, i ? "new" : "current");
@@ -70,7 +72,7 @@
       mask[j/(2*sizeof(long))] |= digit << 4*(j&((2*sizeof(long))-1));
     }
 
-    if (sched_setaffinity(pid, sizeof(toybuf), (void *)mask))
+    if (-1 == sched_setaffinity(pid, sizeof(toybuf), (void *)mask))
       perror_exit(failed, "set", pid);
   }
 }