#[repr(C, align(64))]pub struct SequencedSlotsLayout<const N: usize> {
pub header: LayoutHeader,
pub initialized: IndexbusAtomicU32,
pub _pad0: u32,
pub _pad_to_64: [u8; 40],
pub cursor: IndexbusAtomicU64,
pub _pad_cursor: [u8; 56],
pub gating: [SequencerGatingCell; N],
pub slot_pool: SlotPoolLayout,
pub ring: [IndexbusAtomicU32; 1024],
}Expand description
ByteOr sequenced-slots region: sequencer + slot pool + a fixed ring of slot indices.
This region is the ABI substrate for pipeline lanes that need:
- strict per-lane ordering (via a sequencer cursor), and
- payload storage in shared memory (via fixed-size slots), and
- replay by sequence within the bounded ring window.
v1 notes:
- Capacity is fixed by the IndexBus ABI constant
INDEXBUS_QUEUE_CAPACITY. - Each published sequence
seqmaps toring[seq % INDEXBUS_QUEUE_CAPACITY]. - Producers must not wrap past the minimum gating sequence (Disruptor-style).
Fields§
§header: LayoutHeaderCommon region header (magic/version/capabilities/layout size).
initialized: IndexbusAtomicU320 = uninitialized, 1 = initializing, 2 = initialized
_pad0: u32Padding (reserved).
_pad_to_64: [u8; 40]Pad to 64 so the first counter starts at offset 64.
cursor: IndexbusAtomicU64Producer cursor (monotonic sequence).
_pad_cursor: [u8; 56]Padding to keep the cursor in its own cache line.
gating: [SequencerGatingCell; N]Per-consumer gating sequences.
slot_pool: SlotPoolLayoutSlot pool storing payload bytes.
ring: [IndexbusAtomicU32; 1024]Ring mapping seq -> slot index.
Entries use INDEXBUS_EMPTY_FREE_U32 as the “uninitialized” sentinel.
Implementations§
Source§impl<const N: usize> SequencedSlotsLayout<N>
impl<const N: usize> SequencedSlotsLayout<N>
Sourcepub const REQUIRED_CAPS: u32
pub const REQUIRED_CAPS: u32
Capabilities required for this region to be considered compatible.
Sourcepub const REGION_KIND: u16 = flags::BYTEOR_REGION_KIND_SEQUENCED_SLOTS
pub const REGION_KIND: u16 = flags::BYTEOR_REGION_KIND_SEQUENCED_SLOTS
Region kind discriminator stored in LayoutHeader.flags.
Sourcepub const REGION_KIND_MASK: u16 = ib_flags::INDEXBUS_FLAGS_REGION_KIND_MASK
pub const REGION_KIND_MASK: u16 = ib_flags::INDEXBUS_FLAGS_REGION_KIND_MASK
Mask for the low 8 bits containing the region kind discriminator.
Sourcepub const EMPTY_RING: u32 = indexbus_abi::INDEXBUS_EMPTY_FREE_U32
pub const EMPTY_RING: u32 = indexbus_abi::INDEXBUS_EMPTY_FREE_U32
Sentinel stored in ring entries before a slot is published.