>From 65dac5efc38d7dbb1710d727bc6b67732ce8968c Mon Sep 17 00:00:00 2001 From: Akira Yokosawa <akiyks@xxxxxxxxx> Date: Sun, 14 Oct 2018 18:11:20 +0900 Subject: [PATCH 5/7] toolsoftrade: Employ new scheme for snippet of compiler barriers Signed-off-by: Akira Yokosawa <akiyks@xxxxxxxxx> --- CodeSamples/api-pthreads/api-pthreads.h | 7 +++++-- toolsoftrade/toolsoftrade.tex | 12 +----------- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/CodeSamples/api-pthreads/api-pthreads.h b/CodeSamples/api-pthreads/api-pthreads.h index 6bde0c9..f5510f0 100644 --- a/CodeSamples/api-pthreads/api-pthreads.h +++ b/CodeSamples/api-pthreads/api-pthreads.h @@ -53,7 +53,6 @@ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) #endif /* #ifndef offsetof */ -#define barrier() __asm__ __volatile__("": : :"memory") /* * Default machine parameters. @@ -133,9 +132,13 @@ static __inline__ int spin_is_locked(spinlock_t *sp) #define spin_lock_irqsave(l, f) do { f = 1; spin_lock(l); } while (0) #define spin_unlock_irqrestore(l, f) do { f = 0; spin_unlock(l); } while (0) +//\begin{snippet}[labelbase=ln:api-pthreads:api-pthreads:compiler_barrier,commandchars=\@\[\],numbers=none] #define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x)) -#define READ_ONCE(x) ({ typeof(x) ___x = ACCESS_ONCE(x); ___x; }) +#define READ_ONCE(x) \ + ({ typeof(x) ___x = ACCESS_ONCE(x); ___x; }) #define WRITE_ONCE(x, val) ({ ACCESS_ONCE(x) = (val); }) +#define barrier() __asm__ __volatile__("": : :"memory") +//\end{snippet} #ifndef unlikely #define unlikely(x) x #endif /* #ifndef unlikely */ diff --git a/toolsoftrade/toolsoftrade.tex b/toolsoftrade/toolsoftrade.tex index d808df6..f1a96ff 100644 --- a/toolsoftrade/toolsoftrade.tex +++ b/toolsoftrade/toolsoftrade.tex @@ -1076,17 +1076,7 @@ and all three are discussed at length in Section~\ref{sec:toolsoftrade:Accessing Shared Variables}. \begin{listing}[tb] -{ \scriptsize -\begin{verbbox} -#define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x)) -#define READ_ONCE(x) \ - ({ typeof(x) ___x = ACCESS_ONCE(x); ___x; }) -#define WRITE_ONCE(x, val) ({ ACCESS_ONCE(x) = (val); }) -#define barrier() __asm__ __volatile__("": : :"memory") -\end{verbbox} -} -\centering -\theverbbox +\input{CodeSamples/api-pthreads/api-pthreads@compiler_barrier.fcv} \caption{Compiler Barrier Primitive (for \GCC)} \label{lst:toolsoftrade:Compiler Barrier Primitive (for GCC)} \end{listing} -- 2.7.4