X-Git-Url: https://git.liburcu.org/?a=blobdiff_plain;f=tests%2Fcommon%2Fapi.h;h=3008716606b73182438b4a6bcaac120beafeab50;hb=ce29b37132cef1c1c758e0862ac701e9bb756d29;hp=14033596885bce51b77df4e5c958eb7434a6428e;hpb=f5ab766ee2c8300cb00ca5878b1cb464f960a66d;p=urcu.git diff --git a/tests/common/api.h b/tests/common/api.h index 1403359..3008716 100644 --- a/tests/common/api.h +++ b/tests/common/api.h @@ -1,35 +1,19 @@ +// SPDX-FileCopyrightText: 2006 Paul E. McKenney, IBM. +// +// SPDX-License-Identifier: GPL-2.0-only + #ifndef _INCLUDE_API_H #define _INCLUDE_API_H -#define _GNU_SOURCE -#include "config.h" - /* * common.h: Common Linux kernel-isms. * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; but version 2 of the License only due - * to code included from the Linux kernel. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Copyright (c) 2006 Paul E. McKenney, IBM. - * * Much code taken from the Linux kernel. For such code, the option * to redistribute under later versions of GPL might not be available. */ #include #include -#include "cpuset.h" /* * Machine parameters. @@ -38,27 +22,6 @@ #define ____cacheline_internodealigned_in_smp \ __attribute__((__aligned__(CAA_CACHE_LINE_SIZE))) -/* - * api_pthreads.h: API mapping to pthreads environment. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. However, please note that much - * of the code in this file derives from the Linux kernel, and that such - * code may not be available except under GPLv2. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Copyright (c) 2006 Paul E. McKenney, IBM. - */ #include #include @@ -111,7 +74,7 @@ static void spin_unlock(spinlock_t *sp) typedef pthread_t thread_id_t; -#define NR_THREADS 128 +#define NR_THREADS 4096 #define __THREAD_ID_MAP_EMPTY ((thread_id_t) 0) #define __THREAD_ID_MAP_WAITING ((thread_id_t) 1) @@ -169,7 +132,7 @@ static int smp_thread_id(void) id = pthread_getspecific(thread_id_key); if (id == NULL) return __smp_thread_id(); - return (long)(id - 1); + return ((long) id - 1); } static thread_id_t create_thread(void *(*func)(void *), void *arg) @@ -232,25 +195,26 @@ static void wait_all_threads(void) } } +#ifdef HAVE_SCHED_SETAFFINITY 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 */ } +#else + +static void run_on(int cpu __attribute__((unused))) +{} +#endif /* HAVE_SCHED_SETAFFINITY */ /* * timekeeping -- very crude -- should use MONOTONIC... */ +static inline long long get_microseconds(void) { struct timeval tv; @@ -268,7 +232,7 @@ long long get_microseconds(void) struct { \ __typeof__(type) v \ __attribute__((__aligned__(CAA_CACHE_LINE_SIZE))); \ - } __per_thread_##name[NR_THREADS]; + } __per_thread_##name[NR_THREADS] #define DECLARE_PER_THREAD(type, name) extern DEFINE_PER_THREAD(type, name) #define per_thread(name, thread) __per_thread_##name[thread].v