Add cmm_emit_legacy_smp_mb()
authorOlivier Dion <odion@efficios.com>
Mon, 29 May 2023 15:21:11 +0000 (11:21 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 14 Aug 2023 19:46:29 +0000 (15:46 -0400)
commit0e2125fb7b2c7a92d7030b41df5fb372a7706c32
tree0122339d776c186b65fed1962e78e801846d2abb
parent601922a81d884e16ff404cee7534ede56fb87d0a
Add cmm_emit_legacy_smp_mb()

Some public APIs stipulate implicit memory barriers on operations. These
were coherent with the memory model used at that time. However, with the
migration to a memory model closer to the C11 memory model, these memory
barriers are not strictly emitted by the atomic operations in the new
memory model.

Therefore, introducing the `--disable-legacy-mb' configuration
option. By default, liburcu is configured to emit these legacy memory
barriers, thus keeping backward compatibility at the expense of slower
performances. However, users can opt-out by disabling the legacy memory
barriers.

This options is publicly exported in the system configuration header
file and can be overrode manually on a compilation unit basis by
defining `CONFIG_RCU_EMIT_LEGACY_MB' before including any liburcu files.

The usage of this macro requires to re-write atomic operations in term
of the CMM memory model. This is done for the queue and stack APIs.

Change-Id: Ia5ce3b3d8cd1955556ce96fa4408a63aa098a1a6
Signed-off-by: Olivier Dion <odion@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
configure.ac
include/urcu/arch.h
include/urcu/config.h.in
include/urcu/static/lfstack.h
include/urcu/static/rculfqueue.h
include/urcu/static/rculfstack.h
include/urcu/static/wfcqueue.h
include/urcu/static/wfqueue.h
include/urcu/static/wfstack.h
This page took 0.026503 seconds and 4 git commands to generate.