Messages in this thread | | | Date | Fri, 25 Nov 2016 22:56:29 +0800 | From | Boqun Feng <> | Subject | Re: [PATCH 0/3] virtio/vringh: kill off ACCESS_ONCE() |
| |
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); \ > > })
| |