X-Git-Url: https://git.lttng.org/?p=urcu.git;a=blobdiff_plain;f=tests%2Fapi_gcc.h;h=17487d5c701e81b66349b798b7f7fade5b1d8a96;hp=1ad7345e7ce1ad681bd2043813bdb5aaaff916a5;hb=d8540fc53386cd7ff270085aca621e32772832ba;hpb=833dbdb633ba44bfb71b4b965a83096d8e4e827b diff --git a/tests/api_gcc.h b/tests/api_gcc.h index 1ad7345..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. * @@ -69,12 +73,13 @@ * Machine parameters. */ -#define CACHE_LINE_SIZE 64 +/* #define CACHE_LINE_SIZE 64 */ #define ____cacheline_internodealigned_in_smp \ __attribute__((__aligned__(1 << 6))) #define LOCK_PREFIX "lock ; " +#if 0 /* duplicate with arch_atomic.h */ /* * Atomic data structure, initialization, and access. */ @@ -251,6 +256,8 @@ cmpxchg(volatile long *ptr, long oldval, long newval) #define smp_mb__before_atomic_inc() barrier() #define smp_mb__after_atomic_inc() barrier() +#endif //0 /* duplicate with arch_atomic.h */ + /* * api_pthreads.h: API mapping to pthreads environment. * @@ -287,7 +294,6 @@ cmpxchg(volatile long *ptr, long oldval, long newval) /* * Compiler magic. */ -#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) @@ -297,7 +303,7 @@ cmpxchg(volatile long *ptr, long oldval, long newval) */ #ifndef CACHE_LINE_SIZE -#define CACHE_LINE_SIZE 128 +/* #define CACHE_LINE_SIZE 128 */ #endif /* #ifndef CACHE_LINE_SIZE */ /* @@ -457,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 */ } /* @@ -634,11 +652,11 @@ static void smp_init(void) #define LIST_POISON1 ((void *) 0x00100100) #define LIST_POISON2 ((void *) 0x00200200) -#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER) #define container_of(ptr, type, member) ({ \ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) +#if 0 /* * Simple doubly linked list implementation. * @@ -1163,6 +1181,8 @@ static inline void list_splice_tail_init(struct list_head *list, &pos->member != (head); \ pos = n, n = list_entry(n->member.prev, typeof(*n), member)) +#endif //0 + /* * Double linked lists with a single pointer list head. * Mostly useful for hash tables where the two pointer list head is @@ -1326,3 +1346,5 @@ static inline void hlist_move_list(struct hlist_head *old, pos = n) #endif + +#endif