Trait kernel::block::mq::Operations

source ·
pub trait Operations: Sized {
    const USE_VTABLE_ATTR: ();
    const HAS_QUEUE_RQ: bool = false;
    const HAS_COMMIT_RQS: bool = false;
    const HAS_POLL: bool = false;

    // Required methods
    fn queue_rq(rq: ARef<Request<Self>>, is_last: bool) -> Result;
    fn commit_rqs();

    // Provided method
    fn poll() -> bool { ... }
}
Expand description

Implement this trait to interface blk-mq as block devices.

To implement a block device driver, implement this trait as described in the module level documentation. The kernel will use the implementation of the functions defined in this trait to interface a block device driver. Note: There is no need for an exit_request() implementation, because the drop implementation of the Request type will be invoked by automatically by the C/Rust glue logic.

Required Associated Constants§

source

const USE_VTABLE_ATTR: ()

A marker to prevent implementors from forgetting to use #[vtable] attribute when implementing this trait.

Provided Associated Constants§

source

const HAS_QUEUE_RQ: bool = false

Indicates if the queue_rq method is overridden by the implementor.

source

const HAS_COMMIT_RQS: bool = false

Indicates if the commit_rqs method is overridden by the implementor.

source

const HAS_POLL: bool = false

Indicates if the poll method is overridden by the implementor.

Required Methods§

source

fn queue_rq(rq: ARef<Request<Self>>, is_last: bool) -> Result

Called by the kernel to queue a request with the driver. If is_last is false, the driver is allowed to defer committing the request.

source

fn commit_rqs()

Called by the kernel to indicate that queued requests should be submitted.

Provided Methods§

source

fn poll() -> bool

Called by the kernel to poll the device for completed requests. Only used for poll queues.

Object Safety§

This trait is not object safe.

Implementors§