#[repr(C)]pub struct SubmitRing {
pub submit_head: u32,
pub submit_tail: u32,
pub complete_head: u32,
pub complete_tail: u32,
pub _pad: [u8; 48],
}Expand description
Shared-memory ring buffer mapped into both kernel and domain.
This struct defines the memory layout. The actual ring is initialized
by the kernel and mapped at RING_VADDR in the domain’s address space.
Synchronization protocol:
- Domain writes entries, advances
submit_head(Release) - Domain calls
SYS_SUBMIT - Kernel reads entries from
submit_tailtosubmit_head(Acquire) - Kernel writes completions, advances
complete_head(Release) - Domain reads completions from
complete_tailtocomplete_head(Acquire)
Fields§
§submit_head: u32Next slot for userspace to write (producer).
submit_tail: u32Next slot for kernel to process (consumer).
complete_head: u32Next completion slot for kernel to write (producer).
complete_tail: u32Next completion slot for userspace to read (consumer).
_pad: [u8; 48]Padding to cache-line boundary.
Auto Trait Implementations§
impl Freeze for SubmitRing
impl RefUnwindSafe for SubmitRing
impl Send for SubmitRing
impl Sync for SubmitRing
impl Unpin for SubmitRing
impl UnsafeUnpin for SubmitRing
impl UnwindSafe for SubmitRing
Blanket Implementations§
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