pub mod attributes;
pub mod file;
use r_efi::efi;
pub type EfiFvFileType = u8;
pub const FFS_REVISION: u8 = 2;
pub const FFS_V2_MAX_FILE_SIZE: usize = 0x1000000;
mod raw {
pub(super) mod write_policy {
pub const UNRELIABLE_WRITE: u32 = 0x00000000;
pub const RELIABLE_WRITE: u32 = 0x00000001;
}
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq)]
pub enum WritePolicy {
UnreliableWrite = raw::write_policy::UNRELIABLE_WRITE,
ReliableWrite = raw::write_policy::RELIABLE_WRITE,
}
#[repr(C)]
#[derive(Debug, Clone, Copy)]
pub struct Header {
pub zero_vector: [u8; 16],
pub file_system_guid: efi::Guid,
pub fv_length: u64,
pub signature: u32,
pub attributes: u32,
pub header_length: u16,
pub checksum: u16,
pub ext_header_offset: u16,
pub reserved: u8,
pub revision: u8,
pub block_map: [BlockMapEntry; 0],
}
#[repr(C)]
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct BlockMapEntry {
pub num_blocks: u32,
pub length: u32,
}
#[repr(C)]
#[derive(Debug, Clone, Copy)]
pub struct ExtHeader {
pub fv_name: efi::Guid,
pub ext_header_size: u32,
}