Skip to main content

proka_bootloader/
memory.rs

1//! The generic memory module, which provides memory info to
2//! kernel, so that kernel can know the memory structure 
3//! easily.
4
5/// The generic Memory Map, which can contains 128 memory map
6/// entries.
7#[repr(C, packed)]
8#[derive(Debug, Clone, PartialEq, Eq)]
9pub struct MemoryMap {
10    /// Available counts
11    pub count: u32,
12
13    /// Total entries
14    pub entries: [MemoryEntry; 128],
15}
16
17/// The memory entry.
18#[repr(C, packed)]
19#[derive(Debug, Clone, Copy, PartialEq, Eq)]
20pub struct MemoryEntry {
21    /// The memory region start address
22    pub base_addr: u64,
23
24    /// The memory region length
25    pub length: u64,
26
27    /// The type of this memory region
28    pub mem_type: MemoryType
29}
30
31/// The memory type.
32#[repr(u8)]
33#[derive(Debug, Clone, Copy, Eq, PartialEq)]
34pub enum MemoryType {
35    FreeRAM = 1,
36    Reserved = 2,
37    AcpiReclaim = 3,
38    AcpiNvs = 4,
39    BadMemory = 5,
40    Mmio = 6,
41}