EventsChainLayout

Struct EventsChainLayout 

Source
#[repr(C, align(64))]
pub struct EventsChainLayout<const Q: usize> { pub header: LayoutHeader, pub initialized: IndexbusAtomicU32, pub _pad0: u32, pub _pad_to_64: [u8; 40], pub slot_pool: SlotPoolLayout, pub queues: [IndexQueue; Q], pub mpsc_queues: [MpscQueue; Q], }
Expand description

Shared-memory layout that enables slot passing across a chain of queues.

Conceptually:

  • one slot pool (payload bytes)
  • Q independent SPSC queues that carry slot indices
  • Q independent MPSC queues that carry slot indices

When adjacent stages are connected by queues within the same chain mapping, the executor can forward slot indices without copying payload bytes.

Fields§

§header: LayoutHeader

Common region header (magic/version/capabilities/layout size).

§initialized: IndexbusAtomicU32

0 = uninitialized, 1 = initializing, 2 = initialized

§_pad0: u32

Padding (reserved).

§_pad_to_64: [u8; 40]

Pad to 64 so the first 64-byte-aligned section starts at offset 64.

§slot_pool: SlotPoolLayout

Shared slot pool for payload bytes.

§queues: [IndexQueue; Q]

Per-edge SPSC queues of slot indices.

§mpsc_queues: [MpscQueue; Q]

Per-edge MPSC queues of slot indices.

Implementations§

Source§

impl<const Q: usize> EventsChainLayout<Q>

Source

pub const REQUIRED_CAPS: u32

Capabilities required for this region to be considered compatible.

Source

pub const REGION_KIND: u16 = flags::BYTEOR_REGION_KIND_EVENTS_CHAIN

Region kind discriminator stored in LayoutHeader.flags.

Source

pub const REGION_KIND_MASK: u16 = ib_flags::INDEXBUS_FLAGS_REGION_KIND_MASK

Mask for the low 8 bits containing the region kind discriminator.

Auto Trait Implementations§

§

impl<const Q: usize> !Freeze for EventsChainLayout<Q>

§

impl<const Q: usize> !RefUnwindSafe for EventsChainLayout<Q>

§

impl<const Q: usize> Send for EventsChainLayout<Q>

§

impl<const Q: usize> Sync for EventsChainLayout<Q>

§

impl<const Q: usize> Unpin for EventsChainLayout<Q>

§

impl<const Q: usize> UnwindSafe for EventsChainLayout<Q>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.