~lttng/urcu/trunk

Viewing all changes in revision 1465.

  • Committer: Mathieu Desnoyers
  • Author(s): Olivier Dion
  • Date: 2023-08-14 19:46:29 UTC
  • Revision ID: git-v1:0e2125fb7b2c7a92d7030b41df5fb372a7706c32
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>

expand all expand all

Show diffs side-by-side

added added

removed removed

Lines of Context: