Re: [patch V4 part 1 06/36] compiler: Simple READ/WRITE_ONCE() implementations

Alexandre Chartre
2020-05-06T13:13:31Z

On 5/5/20 3:16 PM, Thomas Gleixner wrote:
> READ/WRITE_ONCE_NOCHECK() is required for atomics in code which cannot be
> instrumented like the x86 int3 text poke code. As READ/WRITE_ONCE() is
> undergoing a rewrite, provide __{READ,WRITE}_ONCE_SCALAR().
>
> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
> ---
> include/linux/compiler.h | 8 ++++++++
> 1 file changed, 8 insertions(+)

Reviewed-by: Alexandre Chartre <alexandre.chartre@oracle.com>

alex.

> --- a/include/linux/compiler.h
> +++ b/include/linux/compiler.h
> @@ -313,6 +313,14 @@ unsigned long read_word_at_a_time(const
> __u.__val; \
> })
>
> +#define __READ_ONCE_SCALAR(x) \
> + (*(const volatile typeof(x) *)&(x))
> +
> +#define __WRITE_ONCE_SCALAR(x, val) \
> +do { \
> + *(volatile typeof(x) *)&(x) = val; \
> +} while (0)
> +
> /**
> * data_race - mark an expression as containing intentional data races
> *
>