MCPcopy Create free account
hub / github.com/Bananymous/banan-os / initialize

Method initialize

kernel/kernel/Memory/VirtualRange.cpp:60–75  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

58 }
59
60 BAN::ErrorOr<void> VirtualRange::initialize()
61 {
62 const size_t page_count = size() / PAGE_SIZE;
63 for (size_t i = 0; i < page_count; i++)
64 {
65 const auto paddr = Heap::get().take_free_page();
66 if (paddr == 0)
67 return BAN::Error::from_errno(ENOMEM);
68 PageTable::with_fast_page(paddr, [] {
69 memset(PageTable::fast_page_as_ptr(), 0, PAGE_SIZE);
70 });
71 m_page_table.map_page_at(paddr, vaddr() + i * PAGE_SIZE, m_flags, PageTable::MemoryType::Normal, false);
72 }
73 m_page_table.invalidate_range(m_vaddr, page_count, true);
74 return {};
75 }
76
77}

Callers 1

create_to_vaddr_rangeMethod · 0.45

Calls 4

memsetFunction · 0.85
take_free_pageMethod · 0.80
map_page_atMethod · 0.45
invalidate_rangeMethod · 0.45

Tested by

no test coverage detected