On Fri, Nov 25, 2016 at 01:44:04PM +0100, Peter Zijlstra wrote:
> On Fri, Nov 25, 2016 at 01:40:44PM +0100, Peter Zijlstra wrote:
> > #define SINGLE_LOAD(x)                                              \
> > {(                                                          \
> >     compiletime_assert_atomic_type(typeof(x));              \
> 
> Should be:
> 
>       compiletime_assert_atomic_type(x);
> 
> >     WARN_SINGLE_COPY_ALIGNMENT(&(x));                       \

Do we need to worry about the side effect on x? Maybe

#define SINGLE_LOAD(x)                                  \
({                                                      \
        typeof(x) *_____ptr;                            \
                                                        \
        compiletime_assert_atomic_type(typeof(x));      \
                                                        \
        _____ptr = &(x);                                \
                                                        \
        WARN_SINGLE_COPY_ALIGNMENT(_____ptr);           \
                                                        \
        READ_ONCE(*_____ptr);                           \
})

Ditto for SINGLE_STORE()

Regards,
Boqun

> >     READ_ONCE(x);                                           \
> > })
> > 
> > #define SINGLE_STORE(x, v)                                  \
> > ({                                                          \
> >     compiletime_assert_atomic_type(typeof(x));              \
> 
> idem
> 
> >     WARN_SINGLE_COPY_ALIGNMENT(&(x));                       \
> >     WRITE_ONCE(x, v);                                       \
> > })

Reply via email to