This is a GNU extension, but a fairly minor one, for a system call that
otherwise has no libc wrapper.
typedef struct cpu_set_t { unsigned long __bits[128/sizeof(long)]; } cpu_set_t;
int __sched_cpucount(size_t, const cpu_set_t *);
+int sched_getcpu(void);
int sched_getaffinity(pid_t, size_t, cpu_set_t *);
int sched_setaffinity(pid_t, size_t, const cpu_set_t *);
--- /dev/null
+#define _GNU_SOURCE
+#include <sched.h>
+#include "syscall.h"
+
+int sched_getcpu(void)
+{
+ int r;
+ unsigned cpu;
+
+ r = __syscall(SYS_getcpu, &cpu, 0, 0);
+ if (!r) return cpu;
+ return __syscall_ret(r);
+}