#[repr(C)]pub struct StateLayout<const STATE_MAX: usize> {
pub header: LayoutHeader,
pub seq: IndexbusAtomicU64,
pub len: IndexbusAtomicU32,
pub pad: IndexbusAtomicU32,
pub data: [u8; STATE_MAX],
}Expand description
State stream region base layout (generic over max bytes).
Note: C header generation typically uses a concrete STATE_MAX (see StateLayout256).
IMPORTANT: This generic layout does not include trailing padding for appended sections.
For C headers and append-only wake sections, prefer a concrete exported layout like
StateLayout256 which includes explicit 64B padding.
§Initialization protocol (v1)
Most IndexBus layouts use a cross-process initialization state machine
initialized: 0 (uninit) / 1 (initializing) / 2 (initialized).
The state-stream layout is intentionally different: it uses the seq field itself as the
writer protocol (even = stable, odd = write-in-progress). A fresh, initialized region starts
with seq = 0 (stable). There is no separate initialized field in v1.
Fields§
§header: LayoutHeaderCommon region header (magic/version/capabilities/layout size).
seq: IndexbusAtomicU64Sequence protocol:
- even = stable
- odd = writer in progress
len: IndexbusAtomicU32Current payload length in bytes.
pad: IndexbusAtomicU32Padding (reserved).
data: [u8; STATE_MAX]State payload bytes (up to len).
Implementations§
Source§impl<const STATE_MAX: usize> StateLayout<STATE_MAX>
impl<const STATE_MAX: usize> StateLayout<STATE_MAX>
Sourcepub const REQUIRED_CAPS: u32 = caps::INDEXBUS_CAP_SUPPORTS_STATE
pub const REQUIRED_CAPS: u32 = caps::INDEXBUS_CAP_SUPPORTS_STATE
Capabilities required for this region to be considered compatible.