rt_bitops.h fails to give implied atomicity guarantees
https://bugs.dpdk.org/show_bug.cgi?id=1385
Bug ID: 1385
Summary: rt_bitops.h fails to give implied atomicity guarantees
Product: DPDK
Version: 23.11
Hardware: All
OS: All
Status: UNCONFIRMED
Severity: normal
Priority: Normal
Component: core
Assignee: [email protected]
Reporter: [email protected]Target Milestone: ---
The documentation (and the naming) for the rte_bit_relaxed_*() functions in rte_bitops.h makes clear that all such functions have a relaxed memory order.
The use of the term "relaxed", which most C programmers likely are familiar with from the C11 memory model specification, itself implies that the operations are supposed to be atomic. Why otherwise mention the memory operations are relaxed? Relaxed is the default for non-atomic loads and stores. In addition, why otherwise declare the address as volatile?
An even stronger indication are the test-and-set family of "relaxed" rte_bitops.h functions. "Test-and-set" in the low-level C programming context always implies an atomic operation. A non-atomic test-and-set does not make sense.
In summary, a perfectly valid interpretation of the API contract is that the functions are atomic.
However, their implementation is not, which may not be obvious to the causal API user.
Signature · 2 lines
You are receiving this mail because: You are the assignee for the bug.
https://bugs.dpdk.org/show_bug.cgi?id=1385
David Marchand ([email protected]) changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Assignee|[email protected] |[email protected]
| |om
Resolution|--- |FIXED
CC| |[email protected]--- Comment #1 from David Marchand ([email protected]) --- Fixed with 471de107ae23 ("bitops: add new bit manipulation API").
Signature · 2 lines
You are receiving this mail because: You are the assignee for the bug.