X-Git-Url: https://git.kernelconcepts.de/?p=karo-tx-linux.git;a=blobdiff_plain;f=Documentation%2Fmemory-barriers.txt;h=b5fe7657456e687628361adda87d3766dd5327ef;hp=41ffd7e9cdcfddf85bf26907fdcf6e41285391be;hb=d63a9788650fcd999b34584316afee6bd4378f19;hpb=6e490b0106a2118ee4c37c37847454a5c2dc6e32 diff --git a/Documentation/memory-barriers.txt b/Documentation/memory-barriers.txt index 41ffd7e9cdcf..b5fe7657456e 100644 --- a/Documentation/memory-barriers.txt +++ b/Documentation/memory-barriers.txt @@ -1711,6 +1711,17 @@ There are some more advanced barrier functions: operations" subsection for information on where to use these. + (*) lockless_dereference(); + This can be thought of as a pointer-fetch wrapper around the + smp_read_barrier_depends() data-dependency barrier. + + This is also similar to rcu_dereference(), but in cases where + object lifetime is handled by some mechanism other than RCU, for + example, when the objects removed only when the system goes down. + In addition, lockless_dereference() is used in some data structures + that can be used both with and without RCU. + + (*) dma_wmb(); (*) dma_rmb(); @@ -1790,7 +1801,6 @@ The Linux kernel has a number of locking constructs: (*) mutexes (*) semaphores (*) R/W semaphores - (*) RCU In all cases there are variants on "ACQUIRE" operations and "RELEASE" operations for each construct. These operations all imply certain barriers: