summaryrefslogtreecommitdiff
path: root/tools/memory-model/linux-kernel.cat
diff options
context:
space:
mode:
authorPaul E. McKenney <paulmck@kernel.org>2023-01-29 09:41:44 -0800
committerPaul E. McKenney <paulmck@kernel.org>2023-03-22 12:02:21 -0700
commit02bae7a24257947fe95fcca80c78e6cb602e94bf (patch)
tree2c8cade39b72d52e748157c284c7b47174879058 /tools/memory-model/linux-kernel.cat
parentdd409de256333899b2632c769dc798b7db537397 (diff)
tools/memory-model: Add smp_mb__after_srcu_read_unlock()
This commit adds support for smp_mb__after_srcu_read_unlock(), which, when combined with a prior srcu_read_unlock(), implies a full memory barrier. No ordering is guaranteed to accesses between the two, and placing accesses between is bad practice in any case. Tests may be found at https://github.com/paulmckrcu/litmus in files matching manual/kernel/C-srcu-mb-*.litmus. Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Diffstat (limited to 'tools/memory-model/linux-kernel.cat')
-rw-r--r--tools/memory-model/linux-kernel.cat3
1 files changed, 2 insertions, 1 deletions
diff --git a/tools/memory-model/linux-kernel.cat b/tools/memory-model/linux-kernel.cat
index 6e531457bb73..3a4d3b49e85c 100644
--- a/tools/memory-model/linux-kernel.cat
+++ b/tools/memory-model/linux-kernel.cat
@@ -49,7 +49,8 @@ let mb = ([M] ; fencerel(Mb) ; [M]) |
* also affected by the fence.
*)
([M] ; po-unlock-lock-po ;
- [After-unlock-lock] ; po ; [M])
+ [After-unlock-lock] ; po ; [M]) |
+ ([M] ; po? ; [Srcu-unlock] ; fencerel(After-srcu-read-unlock) ; [M])
let gp = po ; [Sync-rcu | Sync-srcu] ; po?
let strong-fence = mb | gp