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: dev@dpdk.org Reporter: mattias.ronnblom@ericsson.com 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. -- You are receiving this mail because: You are the assignee for the bug.