From: Mathieu Desnoyers Date: Fri, 10 Jun 2011 20:06:00 +0000 (-0400) Subject: Rename urcu/urcu-futex.h to urcu/futex.h X-Git-Tag: v0.6.0~10 X-Git-Url: https://git.liburcu.org/?p=urcu.git;a=commitdiff_plain;h=4184999668035993577cb9ae24feac4eb4505a1e Rename urcu/urcu-futex.h to urcu/futex.h Signed-off-by: Mathieu Desnoyers --- diff --git a/Makefile.am b/Makefile.am index 44906fc..6a05346 100644 --- a/Makefile.am +++ b/Makefile.am @@ -7,7 +7,7 @@ SUBDIRS = . tests include_HEADERS = urcu.h $(top_srcdir)/urcu-*.h nobase_dist_include_HEADERS = urcu/compiler.h urcu/hlist.h urcu/list.h \ - urcu/rculist.h urcu/rcuhlist.h urcu/system.h urcu/urcu-futex.h \ + urcu/rculist.h urcu/rcuhlist.h urcu/system.h urcu/futex.h \ urcu/uatomic/generic.h urcu/arch/generic.h urcu/wfstack.h \ urcu/wfqueue.h urcu/rculfstack.h urcu/rculfqueue.h \ urcu/ref.h urcu/map/*.h urcu/static/*.h diff --git a/compat_futex.c b/compat_futex.c index 9dfcfeb..28089cc 100644 --- a/compat_futex.c +++ b/compat_futex.c @@ -28,7 +28,7 @@ #include #include -#include +#include static pthread_mutex_t compat_futex_lock = PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t compat_futex_cond = PTHREAD_COND_INITIALIZER; diff --git a/urcu-call-rcu-impl.h b/urcu-call-rcu-impl.h index bd3126b..4d01c1b 100644 --- a/urcu-call-rcu-impl.h +++ b/urcu-call-rcu-impl.h @@ -39,7 +39,7 @@ #include "urcu-call-rcu.h" #include "urcu-pointer.h" #include "urcu/list.h" -#include "urcu/urcu-futex.h" +#include "urcu/futex.h" /* Data structure that identifies a call_rcu thread. */ diff --git a/urcu-defer-impl.h b/urcu-defer-impl.h index 8dcd114..f8dfa4c 100644 --- a/urcu-defer-impl.h +++ b/urcu-defer-impl.h @@ -41,7 +41,7 @@ #include #include -#include "urcu/urcu-futex.h" +#include "urcu/futex.h" #include #include diff --git a/urcu/futex.h b/urcu/futex.h new file mode 100644 index 0000000..69f8961 --- /dev/null +++ b/urcu/futex.h @@ -0,0 +1,66 @@ +#ifndef _URCU_FUTEX_H +#define _URCU_FUTEX_H + +/* + * urcu-futex.h + * + * Userspace RCU - sys_futex/compat_futex header. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#define FUTEX_WAIT 0 +#define FUTEX_WAKE 1 + +/* + * sys_futex compatibility header. + * Use *only* *either of* futex_noasync OR futex_async on a given address. + * + * futex_noasync cannot be executed in signal handlers, but ensures that + * it will be put in a wait queue even in compatibility mode. + * + * futex_async is signal-handler safe for the wakeup. It uses polling + * on the wait-side in compatibility mode. + */ + +#ifdef CONFIG_RCU_HAVE_FUTEX +#include +#define futex(...) syscall(__NR_futex, __VA_ARGS__) +#define futex_noasync(uaddr, op, val, timeout, uaddr2, val3) \ + futex(uaddr, op, val, timeout, uaddr2, val3) +#define futex_async(uaddr, op, val, timeout, uaddr2, val3) \ + futex(uaddr, op, val, timeout, uaddr2, val3) +#else +extern int compat_futex_noasync(int *uaddr, int op, int val, + const struct timespec *timeout, int *uaddr2, int val3); +#define futex_noasync(uaddr, op, val, timeout, uaddr2, val3) \ + compat_futex_noasync(uaddr, op, val, timeout, uaddr2, val3) +extern int compat_futex_async(int *uaddr, int op, int val, + const struct timespec *timeout, int *uaddr2, int val3); +#define futex_async(uaddr, op, val, timeout, uaddr2, val3) \ + compat_futex_async(uaddr, op, val, timeout, uaddr2, val3) +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* _URCU_FUTEX_H */ diff --git a/urcu/static/urcu-qsbr.h b/urcu/static/urcu-qsbr.h index f189e31..d544bb2 100644 --- a/urcu/static/urcu-qsbr.h +++ b/urcu/static/urcu-qsbr.h @@ -41,7 +41,7 @@ #include #include #include -#include +#include #ifdef __cplusplus extern "C" { diff --git a/urcu/static/urcu.h b/urcu/static/urcu.h index 2898272..3161a40 100644 --- a/urcu/static/urcu.h +++ b/urcu/static/urcu.h @@ -39,7 +39,7 @@ #include #include #include -#include +#include #ifdef __cplusplus extern "C" { diff --git a/urcu/urcu-futex.h b/urcu/urcu-futex.h deleted file mode 100644 index 69f8961..0000000 --- a/urcu/urcu-futex.h +++ /dev/null @@ -1,66 +0,0 @@ -#ifndef _URCU_FUTEX_H -#define _URCU_FUTEX_H - -/* - * urcu-futex.h - * - * Userspace RCU - sys_futex/compat_futex header. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -#define FUTEX_WAIT 0 -#define FUTEX_WAKE 1 - -/* - * sys_futex compatibility header. - * Use *only* *either of* futex_noasync OR futex_async on a given address. - * - * futex_noasync cannot be executed in signal handlers, but ensures that - * it will be put in a wait queue even in compatibility mode. - * - * futex_async is signal-handler safe for the wakeup. It uses polling - * on the wait-side in compatibility mode. - */ - -#ifdef CONFIG_RCU_HAVE_FUTEX -#include -#define futex(...) syscall(__NR_futex, __VA_ARGS__) -#define futex_noasync(uaddr, op, val, timeout, uaddr2, val3) \ - futex(uaddr, op, val, timeout, uaddr2, val3) -#define futex_async(uaddr, op, val, timeout, uaddr2, val3) \ - futex(uaddr, op, val, timeout, uaddr2, val3) -#else -extern int compat_futex_noasync(int *uaddr, int op, int val, - const struct timespec *timeout, int *uaddr2, int val3); -#define futex_noasync(uaddr, op, val, timeout, uaddr2, val3) \ - compat_futex_noasync(uaddr, op, val, timeout, uaddr2, val3) -extern int compat_futex_async(int *uaddr, int op, int val, - const struct timespec *timeout, int *uaddr2, int val3); -#define futex_async(uaddr, op, val, timeout, uaddr2, val3) \ - compat_futex_async(uaddr, op, val, timeout, uaddr2, val3) -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* _URCU_FUTEX_H */