Skip to main content

IbvDeviceImpl

Trait IbvDeviceImpl 

Source
pub trait IbvDeviceImpl:
    Named
    + Debug
    + Send
    + Sync
    + 'static {
    type Domain: IbvDomainImpl;

    // Required methods
    fn backend_name() -> &'static str;
    fn is_instance(ctx: Arc<IbvContext>) -> bool;
    fn apply_config_defaults(config: &mut IbvConfig);
}
Expand description

Per-backend driver for [IbvDevice]. Concrete impls register themselves via [register_ibv_device_impl!].

Required Associated Types§

Source

type Domain: IbvDomainImpl

The per-domain strategy used by this backend (how memory regions are registered and queue pairs built against a PD). [IbvDomain] is generic over this.

Required Methods§

Source

fn backend_name() -> &'static str

Human-readable display name for the backend this impl drives (e.g., "mellanox", "efa"). Surfaced in diagnostics; not used as a registry key.

Source

fn is_instance(ctx: Arc<IbvContext>) -> bool

Returns true if ctx belongs to this backend. Called transiently, once per ibverbs device, while [DEVICE_NAMES_BY_IMPL] is built.

Source

fn apply_config_defaults(config: &mut IbvConfig)

Seeds an IbvConfig with backend-appropriate defaults (e.g., EFA caps max_send_sge at 1).

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§