MCPcopy Index your code
hub / github.com/LibertyOS-Development/kernel / init

Function init

src/mem.rs:36–77  ·  view source on GitHub ↗

Initialization

(bootinfo: &'static BootInfo)

Source from the content-addressed store, hash-verified

34
35// Initialization
36pub fn init(bootinfo: &'static BootInfo)
37{
38 interrupts::without_interrupts(||
39 {
40 let mut memsize = 0;
41
42 for region in bootinfo.memory_map.iter()
43 {
44 let start_address = region.range.start_addr();
45 let end_address = region.range.end_addr();
46
47 memsize += end_address - start_address;
48 serprint!("[INFO] MEM [{:#016X}-{:#016X}] {:?}\n", start_address, end_address, region.region_type);
49 }
50
51 serprint!("[INFO] MEM: {} KB\n", memsize >> 10);
52 MEMSIZE.store(memsize, Ordering::Relaxed);
53
54 unsafe
55 {
56 PMEM_OFFSET = bootinfo.physical_memory_offset
57 };
58
59 unsafe
60 {
61 MEMMAP.replace(&bootinfo.memory_map)
62 };
63
64 let mut mapper = unsafe
65 {
66 mapper(VirtAddr::new(PMEM_OFFSET))
67 };
68
69 let mut framealloc = unsafe
70 {
71 BootInfoFrameAllocator::init(&bootinfo.memory_map)
72 };
73
74 crate::allocator::init_heap(&mut mapper, &mut framealloc)
75 .expect("[ERR] FAILED TO INITALIZE HEAP");
76 });
77}
78
79
80unsafe fn active_lvl4_tab(physmem_offset: VirtAddr) -> &'static mut PageTable

Callers

nothing calls this directly

Calls 2

mapperFunction · 0.85
init_heapFunction · 0.85

Tested by

no test coverage detected