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:
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
|
||||||
|
Loading…
Reference in New Issue
Block a user