Liking cljdoc? Tell your friends :D

DPDK ring observable semantics

This example records semantic design knowledge as ordinary documentation. It is not a Bridge artifact and does not establish that any evidence ran.

Reserve producer head

PropertyDesign
Sourceartifact/lib/ring/rte_ring_elem_pvt.h, move_prod_head return site
TriggerAfter reservation
Capture timingPost-state
Snapshot strengthWeak
CollectionInstrumentation
Semantic scopeBase and trace semantics
CapturesThread ID, batch size, prodHead, consHead
Maps toMPMCReserveProd, HTSReserveProd, RTSReserveProd
Used byTrace validation and differential tests

The weak snapshot at reservation is acceptable because the opposing tail may be stabilized later by acquire semantics inside the CAS loop.

Publish tail

PropertyDesign
Sourceartifact/lib/ring/rte_ring_c11_pvt.h, __rte_ring_update_tail and mode-specific update_tail return sites
TriggerAfter publication
Capture timingPost-state
Snapshot strengthStrong
CollectionInstrumentation
Semantic scopeBase and trace semantics
CapturesprodHead, prodTail, consHead, consTail, prodCnt, prodTailCnt
Maps toMPMCPublishTail, HTSPublishTail, RTSPublishTail, TailProgress
Used byTrace validation, runtime assertions, and differential tests

PublishTail is the linearization point for visibility of produced elements.

Concurrent trace ordering

PropertyDesign
Sourceharness/traces/concurrent_mpmc.ndjson, derived from timestamp order
TriggerDerived
Capture timingMixed
Snapshot strengthDerived
CollectionReplay
Semantic scopeTrace semantics
CapturesTimestamp and event order
Maps toTrace-ordering assumption
Used byTrace validation

Concurrent trace consumers trust timestamp ordering over mutex-serialized emission order when the two conflict. Any change to timestamp generation, buffering, or emission serialization requires review of this rule and rerunning the registered trace evidence.

Can you improve this documentation?Edit on GitHub

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
Move to previous article
Move to next article
Ctrl+/Jump to the search field
× close