Index: rt-tests/Makefile =================================================================== --- rt-tests.orig/Makefile +++ rt-tests/Makefile @@ -20,7 +20,11 @@ endif UTILS = src/lib/rt-utils.o .PHONY: all -all: $(TARGETS) +all: src/lib/getcpu.h $(TARGETS) + +src/lib/getcpu.h: + @touch $@ + @grep -q sched_getcpu /usr/include/bits/sched.h && echo "#define HAS_SCHED_GETCPU" >$@; true cyclictest: src/cyclictest/cyclictest.c $(UTILS) $(CC) $(CFLAGS) -D VERSION_STRING=$(VERSION_STRING) $^ -o $@ $(LIBS) @@ -59,7 +63,7 @@ CLEANUP += $(if $(wildcard .git), Change .PHONY: clean clean: for F in $(CLEANUP); do find -type f -name $$F | xargs rm -f; done - rm -f hwlatdetect + rm -f hwlatdetect src/lib/getcpu.h .PHONY: distclean distclean: clean Index: rt-tests/src/backfire/sendme.c =================================================================== --- rt-tests.orig/src/backfire/sendme.c +++ rt-tests/src/backfire/sendme.c @@ -30,6 +30,7 @@ #include #include #include "rt-utils.h" +#include "getcpu.h" #define _GNU_SOURCE #include @@ -38,11 +39,17 @@ #include #include +#include + #define USEC_PER_SEC 1000000 #define NSEC_PER_SEC 1000000000 #define SIGTEST SIGHUP +#ifndef HAS_SCHED_GETCPU +#define getcpu(cpu, node, cache) syscall(__NR_getcpu, cpu, node, cache) +#endif + enum { AFFINITY_UNSPECIFIED, AFFINITY_SPECIFIED, @@ -197,8 +204,15 @@ int main(int argc, char *argv[]) if (setaffinity != AFFINITY_UNSPECIFIED) { CPU_ZERO(&mask); - if (setaffinity == AFFINITY_USECURRENT) + if (setaffinity == AFFINITY_USECURRENT) { +#ifdef HAS_SCHED_GETCPU affinity = sched_getcpu(); +#else + int c, s; + s = getcpu(&c, NULL, NULL); + affinity = (s == -1) ? s : c; +#endif + } CPU_SET(affinity, &mask); if (sched_setaffinity(0, sizeof(mask), &mask) == -1) fprintf(stderr, "WARNING: Could not set CPU affinity " Index: rt-tests/src/ptsematest/ptsematest.c =================================================================== --- rt-tests.orig/src/ptsematest/ptsematest.c +++ rt-tests/src/ptsematest/ptsematest.c @@ -35,11 +35,15 @@ #include #include #include "rt-utils.h" +#include "getcpu.h" #define __USE_GNU #include #define gettid() syscall(__NR_gettid) +#ifndef HAS_SCHED_GETCPU +#define getcpu(cpu, node, cache) syscall(__NR_getcpu, cpu, node, cache) +#endif #define USEC_PER_SEC 1000000 @@ -108,7 +112,13 @@ void *semathread(void *param) if(par->max_cycles && par->samples >= par->max_cycles) par->shutdown = 1; if (mustgetcpu) { +#ifdef HAS_SCHED_GETCPU par->cpu = sched_getcpu(); +#else + int c, s; + s = getcpu(&c, NULL, NULL); + par->cpu = (s == -1) ? s : c; +#endif } } else { /* Receiver */ @@ -150,7 +160,13 @@ void *semathread(void *param) if (par->max_cycles && par->samples >= par->max_cycles) par->shutdown = 1; if (mustgetcpu) { +#ifdef HAS_SCHED_GETCPU par->cpu = sched_getcpu(); +#else + int c, s; + s = getcpu(&c, NULL, NULL); + par->cpu = (s == -1) ? s : c; +#endif } nanosleep(&par->delay, NULL); pthread_mutex_unlock(&syncmutex[par->num]); Index: rt-tests/src/sigwaittest/sigwaittest.c =================================================================== --- rt-tests.orig/src/sigwaittest/sigwaittest.c +++ rt-tests/src/sigwaittest/sigwaittest.c @@ -37,11 +37,15 @@ #include #include #include "rt-utils.h" +#include "getcpu.h" #define __USE_GNU #include #define gettid() syscall(__NR_gettid) +#ifndef HAS_SCHED_GETCPU +#define getcpu(cpu, node, cache) syscall(__NR_getcpu, cpu, node, cache) +#endif #define USEC_PER_SEC 1000000 @@ -139,7 +143,13 @@ void *semathread(void *param) par->shutdown = 1; if (mustgetcpu) { +#ifdef HAS_SCHED_GETCPU par->cpu = sched_getcpu(); +#else + int c, s; + s = getcpu(&c, NULL, NULL); + par->cpu = (s == -1) ? s : c; +#endif } sigwait(&sigset, &sig); } else { @@ -163,7 +173,13 @@ void *semathread(void *param) par->shutdown = 1; if (mustgetcpu) { +#ifdef HAS_SCHED_GETCPU par->cpu = sched_getcpu(); +#else + int c, s; + s = getcpu(&c, NULL, NULL); + par->cpu = (s == -1) ? s : c; +#endif } /* * Latency is the time spent between sending and Index: rt-tests/src/svsematest/svsematest.c =================================================================== --- rt-tests.orig/src/svsematest/svsematest.c +++ rt-tests/src/svsematest/svsematest.c @@ -42,8 +42,7 @@ #include #include #include "rt-utils.h"