coreboot_fs/
fmap.rs

1use plain::Plain;
2
3#[derive(Clone, Copy, Debug)]
4#[repr(packed)]
5pub struct FmapArea {
6    pub offset: u32,
7    pub size: u32,
8    pub name: [u8; 32],
9    pub flags: u16,
10}
11
12#[derive(Clone, Copy, Debug)]
13#[repr(packed)]
14pub struct Fmap {
15    pub signature: [u8; 8],
16    pub ver_major: u8,
17    pub ver_minor: u8,
18    pub base: u64,
19    pub size: u32,
20    pub name: [u8; 32],
21    pub nareas: u16,
22}
23
24impl Fmap {
25    pub fn area(&self, i: u16) -> &FmapArea {
26        unsafe {
27            &*((self as *const Self).add(1) as *const FmapArea).add(i as usize)
28        }
29    }
30}
31
32unsafe impl Plain for Fmap {}