X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=tests%2Fapi_gcc.h;h=17487d5c701e81b66349b798b7f7fade5b1d8a96;hb=d8540fc53386cd7ff270085aca621e32772832ba;hp=b31f3fcd2a1d5a52426c01537bd76820c00023a3;hpb=8adc73ec4c752aa115493ffb8a6e2c2869632a53;p=urcu.git diff --git a/tests/api_gcc.h b/tests/api_gcc.h index b31f3fc..17487d5 100644 --- a/tests/api_gcc.h +++ b/tests/api_gcc.h @@ -1,5 +1,9 @@ + +#ifndef _INCLUDE_API_H #define _INCLUDE_API_H +#include "../config.h" + /* * common.h: Common Linux kernel-isms. * @@ -459,13 +463,25 @@ static void wait_all_threads(void) } } +#ifndef HAVE_CPU_SET_T +typedef unsigned long cpu_set_t; +# define CPU_ZERO(cpuset) do { *(cpuset) = 0; } while(0) +# define CPU_SET(cpu, cpuset) do { *(cpuset) |= (1UL << (cpu)); } while(0) +#endif + static void run_on(int cpu) { +#if HAVE_SCHED_SETAFFINITY cpu_set_t mask; CPU_ZERO(&mask); CPU_SET(cpu, &mask); +#if SCHED_SETAFFINITY_ARGS == 2 + sched_setaffinity(0, &mask); +#else sched_setaffinity(0, sizeof(mask), &mask); +#endif +#endif /* HAVE_SCHED_SETAFFINITY */ } /* @@ -1330,3 +1346,5 @@ static inline void hlist_move_list(struct hlist_head *old, pos = n) #endif + +#endif