]> git.baikalelectronics.ru Git - kernel.git/commit
kernel: Provide READ_ONCE and ASSIGN_ONCE
authorChristian Borntraeger <borntraeger@de.ibm.com>
Tue, 25 Nov 2014 09:01:16 +0000 (10:01 +0100)
committerChristian Borntraeger <borntraeger@de.ibm.com>
Thu, 18 Dec 2014 08:54:36 +0000 (09:54 +0100)
commit784afe65c4fe12236e3feb24d5065b2a78e3fd1d
treef19ebe417d11e2874291ddbf2bb2f82ffac8705c
parentb36e97dfb8d1066738c9c66a6ba48343a3ae607e
kernel: Provide READ_ONCE and ASSIGN_ONCE

ACCESS_ONCE does not work reliably on non-scalar types. For
example gcc 4.6 and 4.7 might remove the volatile tag for such
accesses during the SRA (scalar replacement of aggregates) step
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58145)

Let's provide READ_ONCE/ASSIGN_ONCE that will do all accesses via
scalar types as suggested by Linus Torvalds. Accesses larger than
the machines word size cannot be guaranteed to be atomic. These
macros will use memcpy and emit a build warning.

Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
include/linux/compiler.h