coreboot-fs 0.1.1

Coreboot Filesystem Parser
Documentation
use plain::Plain;

#[derive(Clone, Copy, Debug)]
#[repr(packed)]
pub struct FmapArea {
    pub offset: u32,
    pub size: u32,
    pub name: [u8; 32],
    pub flags: u16,
}

#[derive(Clone, Copy, Debug)]
#[repr(packed)]
pub struct Fmap {
    pub signature: [u8; 8],
    pub ver_major: u8,
    pub ver_minor: u8,
    pub base: u64,
    pub size: u32,
    pub name: [u8; 32],
    pub nareas: u16,
}

impl Fmap {
    pub fn area(&self, i: u16) -> &FmapArea {
        unsafe {
            &*((self as *const Self).add(1) as *const FmapArea).add(i as usize)
        }
    }
}

unsafe impl Plain for Fmap {}