#![no_std]
#![cfg_attr(doc, feature(doc_cfg))]
extern crate alloc;
#[cfg(test)]
extern crate std;
use alloc::boxed::Box;
#[cfg(feature = "bcm2835-sdhci")]
pub mod bcm2835sdhci;
#[cfg(feature = "cvsd")]
pub mod cvsd;
#[cfg(feature = "ramdisk")]
pub mod ramdisk;
#[cfg(feature = "ramdisk-static")]
pub mod ramdisk_static;
#[cfg(feature = "ahci")]
pub mod ahci;
pub mod partition;
#[cfg(feature = "sdmmc")]
pub mod sdmmc;
#[doc(no_inline)]
pub use ax_driver_base::{BaseDriverOps, DevError, DevResult, DeviceType};
pub trait BlockDriverOps: BaseDriverOps {
fn num_blocks(&self) -> u64;
fn block_size(&self) -> usize;
fn read_block(&mut self, block_id: u64, buf: &mut [u8]) -> DevResult;
fn write_block(&mut self, block_id: u64, buf: &[u8]) -> DevResult;
fn flush(&mut self) -> DevResult;
}
impl<T: BlockDriverOps + ?Sized> BlockDriverOps for Box<T> {
fn num_blocks(&self) -> u64 {
(**self).num_blocks()
}
fn block_size(&self) -> usize {
(**self).block_size()
}
fn read_block(&mut self, block_id: u64, buf: &mut [u8]) -> DevResult {
(**self).read_block(block_id, buf)
}
fn write_block(&mut self, block_id: u64, buf: &[u8]) -> DevResult {
(**self).write_block(block_id, buf)
}
fn flush(&mut self) -> DevResult {
(**self).flush()
}
}