pal_uring

Struct IoInitiator

Source
pub struct IoInitiator { /* private fields */ }
Expand description

Client handle for initiating IOs or spawning tasks on a specific threadpool thread.

Implementations§

Source§

impl IoInitiator

Source

pub fn probe(&self, opcode: u8) -> bool

Probes the ring for supporting a given opcode.

Source

pub async unsafe fn issue_io<T, F>(&self, io_mem: T, f: F) -> (Result<i32>, T)
where T: 'static + Unpin, F: FnOnce(&mut T) -> Entry,

Issues an IO described by f, referencing IO memory in io_mem.

The submission queue entry for the IO is provided by f so that the IO can reference memory in the io_mem object. A reference to io_mem is passed to f after it has been pinned in memory so that it will not move for the lifetime of the IO.

Once the IO has completed, both the result and the IO memory are returned.

§Safety

The caller must guarantee that f returns a submission queue entry that only references memory of static lifetime or that is part of the io_mem object passed to f.

§Aborts

The process will abort if the async function is dropped before it completes. This is because the IO memory is not moved into the heap, and drop cannot synchronously wait for the IO to complete.

Trait Implementations§

Source§

impl Clone for IoInitiator

Source§

fn clone(&self) -> IoInitiator

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for IoInitiator

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl FdReadyDriver for IoInitiator

Source§

type FdReady = FdReady<IoInitiator>

The file descriptor ready type.
Source§

fn new_fd_ready(&self, fd: RawFd) -> Result<Self::FdReady>

Returns a new object for polling file descriptor readiness.
Source§

impl Initiate for IoInitiator

Source§

fn initiator(&self) -> &IoInitiator

Returns a reference to the initiator to use for IO operations. Read more
Source§

impl Spawn for IoInitiator

Source§

fn scheduler(&self, _metadata: &TaskMetadata) -> Arc<dyn Schedule>

Gets a scheduler for a new task.
Source§

fn spawn<T>( &self, name: impl Into<Arc<str>>, fut: impl Future<Output = T> + Send + 'static, ) -> Task<T, TaskMetadata>
where T: 'static + Send, Self: Sized,

Spawns a task.
Source§

impl TimerDriver for IoInitiator

Source§

type Timer = Timer<IoInitiator>

The timer type.
Source§

fn new_timer(&self) -> Self::Timer

Returns a new timer.
Source§

impl WaitDriver for IoInitiator

Source§

type Wait = FdWait<IoInitiator>

The wait object.
Source§

fn new_wait(&self, fd: RawFd, read_size: usize) -> Result<Self::Wait>

Creates a new wait. Read more

Auto Trait Implementations§

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> Driver for T

Source§

fn new_dyn_timer(&self) -> SmallBox<dyn PollTimer, S4>

Returns a new timer.
Source§

fn new_dyn_fd_ready( &self, fd: i32, ) -> Result<SmallBox<dyn PollFdReady, S4>, Error>

Returns a new object for polling file descriptor readiness.
Source§

fn new_dyn_socket_ready( &self, socket: i32, ) -> Result<SmallBox<dyn PollSocketReady, S4>, Error>

Creates a new object for polling socket readiness.
Source§

fn new_dyn_wait( &self, fd: i32, read_size: usize, ) -> Result<SmallBox<dyn PollWait, S4>, Error>

Creates a new wait. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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> SocketReadyDriver for T
where T: FdReadyDriver,

Source§

type SocketReady = <T as FdReadyDriver>::FdReady

The socket ready type.
Source§

fn new_socket_ready( &self, socket: i32, ) -> Result<<T as SocketReadyDriver>::SocketReady, Error>

Creates a new object for polling socket readiness.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
Source§

impl<T> SpawnDriver for T
where T: Spawn + Driver,