ax-runtime 0.6.0

Runtime library of ArceOS
use alloc::string::String;

#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub struct DiskId(pub u64);

#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
pub struct PartitionId(pub u32);

#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct BlockRegion {
    pub start_block: u64,
    pub num_blocks: u64,
}

impl BlockRegion {
    pub const fn new(start_block: u64, num_blocks: u64) -> Self {
        Self {
            start_block,
            num_blocks,
        }
    }
}

#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub enum PartitionTableKind {
    Raw,
    Gpt,
    Mbr,
}

#[derive(Clone, Debug, Eq, PartialEq)]
pub struct PartitionUuid(pub String);

#[derive(Clone, Debug, Eq, PartialEq)]
pub struct PartitionLabel(pub String);

#[derive(Clone, Debug, Eq, PartialEq)]
pub struct BlockVolume {
    pub disk_id: DiskId,
    pub partition_id: PartitionId,
    pub region: BlockRegion,
    pub table_kind: PartitionTableKind,
    pub bootable: bool,
    pub partuuid: Option<PartitionUuid>,
    pub partlabel: Option<PartitionLabel>,
}