Skip to contentSkip to conversation

rt_bitops.h fails to give implied atomicity guarantees

DPDK/core Bug 1385 [email protected] 1 participant 2 messages Feb 26, 2024 – Oct 9, 2024

lore
Share & tools
lore
#0 lore raw

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.
#1 lore raw

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.