Documentation: circular-buffers: use READ_ONCE()
While the {READ,WRITE}_ONCE() macros should be used in preference to
ACCESS_ONCE(), the circular buffer documentation uses the latter
exclusively.
To point people in the right direction, and as a step towards the
eventual removal of ACCESS_ONCE(), update the documentation to use
READ_ONCE(), as ACCESS_ONCE() is only used in a reader context in the
circular buffer documentation.
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Acked-by: David Howells <dhowells@redhat.com>
Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Signed-off-by: Jonathan Corbet <corbet@lwn.net>
This commit is contained in:
committed by
Jonathan Corbet
parent
47f4212210
commit
01e4644203
@@ -161,7 +161,7 @@ The producer will look something like this:
|
|||||||
|
|
||||||
unsigned long head = buffer->head;
|
unsigned long head = buffer->head;
|
||||||
/* The spin_unlock() and next spin_lock() provide needed ordering. */
|
/* The spin_unlock() and next spin_lock() provide needed ordering. */
|
||||||
unsigned long tail = ACCESS_ONCE(buffer->tail);
|
unsigned long tail = READ_ONCE(buffer->tail);
|
||||||
|
|
||||||
if (CIRC_SPACE(head, tail, buffer->size) >= 1) {
|
if (CIRC_SPACE(head, tail, buffer->size) >= 1) {
|
||||||
/* insert one item into the buffer */
|
/* insert one item into the buffer */
|
||||||
@@ -222,7 +222,7 @@ This will instruct the CPU to make sure the index is up to date before reading
|
|||||||
the new item, and then it shall make sure the CPU has finished reading the item
|
the new item, and then it shall make sure the CPU has finished reading the item
|
||||||
before it writes the new tail pointer, which will erase the item.
|
before it writes the new tail pointer, which will erase the item.
|
||||||
|
|
||||||
Note the use of ACCESS_ONCE() and smp_load_acquire() to read the
|
Note the use of READ_ONCE() and smp_load_acquire() to read the
|
||||||
opposition index. This prevents the compiler from discarding and
|
opposition index. This prevents the compiler from discarding and
|
||||||
reloading its cached value - which some compilers will do across
|
reloading its cached value - which some compilers will do across
|
||||||
smp_read_barrier_depends(). This isn't strictly needed if you can
|
smp_read_barrier_depends(). This isn't strictly needed if you can
|
||||||
|
|||||||
Reference in New Issue
Block a user