#[repr(C, align(64))]pub struct ParallelInvokeSlot {
pub status: AtomicU32,
pub _pad0: u32,
pub job_id: AtomicU64,
pub packet: InvokePacket,
pub result: InvocationResult,
}Expand description
One host<->guest invoke slot. Slots are addressed by lane index at
parallel_slot_base + lane * PARALLEL_INVOKE_SLOT_BYTES.
Synchronization protocol:
- host writes
job_idandpacket, then storesREADYwith release; - guest CASes
READY -> RUNNING, runs the invoke, writesresult, then storesDONEwith release; - host reads
DONEwith acquire, copiesresult, then storesEMPTY.
Bench-only control commands, such as EVICT_JIT_READY, use the same
RUNNING -> DONE -> EMPTY completion protocol after the host reserves all
lanes.
Fields§
§status: AtomicU32§_pad0: u32§job_id: AtomicU64§packet: InvokePacket§result: InvocationResultAuto Trait Implementations§
impl !Freeze for ParallelInvokeSlot
impl RefUnwindSafe for ParallelInvokeSlot
impl Send for ParallelInvokeSlot
impl Sync for ParallelInvokeSlot
impl Unpin for ParallelInvokeSlot
impl UnsafeUnpin for ParallelInvokeSlot
impl UnwindSafe for ParallelInvokeSlot
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.