Remove data dependency barrier from atomic_load_* functions
authorvisa <visa@openbsd.org>
Mon, 21 Mar 2022 05:45:52 +0000 (05:45 +0000)
committervisa <visa@openbsd.org>
Mon, 21 Mar 2022 05:45:52 +0000 (05:45 +0000)
commit0a3ddbf3944494eafe4f5b46a34dd699ddf695cb
tree6e6ecc7692d9762682e6b6298ab39c9563ab1b63
parent5b2dcb8ff7879351e171e54402df230b1b8b617a
Remove data dependency barrier from atomic_load_* functions

This makes the atomic_load_* functions relaxed in terms of memory
ordering. Now it should be acceptable to use these functions in
assertions.

The need of the data dependency barrier is conditioned to usage.
The barrier is unnecessary for the control decisions that cond_wait()
and refcnt_finalize() make. READ_ONCE() and SMR_PTR_GET() use the
barrier so that loaded pointers would work as excepted in lock-free
contexts (some Alpha CPUs have a data cache design that can cause
unusual load-load reordering if not synchronized properly).

OK bluhm@
sys/sys/atomic.h