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

Method initialize

kernel/kernel/Device/FramebufferDevice.cpp:72–95  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

70 }
71
72 BAN::ErrorOr<void> FramebufferDevice::initialize()
73 {
74 size_t video_memory_pages = range_page_count(m_video_memory_paddr, m_height * m_pitch);
75 m_video_memory_vaddr = PageTable::kernel().reserve_free_contiguous_pages(video_memory_pages, KERNEL_OFFSET);
76 if (m_video_memory_vaddr == 0)
77 return BAN::Error::from_errno(ENOMEM);
78 PageTable::kernel().map_range_at(
79 m_video_memory_paddr & PAGE_ADDR_MASK,
80 m_video_memory_vaddr,
81 video_memory_pages * PAGE_SIZE,
82 PageTable::Flags::ReadWrite | PageTable::Flags::Present,
83 PageTable::WriteCombining
84 );
85
86 m_video_buffer = TRY(VirtualRange::create_to_vaddr_range(
87 PageTable::kernel(),
88 { KERNEL_OFFSET, UINTPTR_MAX },
89 BAN::Math::div_round_up<size_t>(m_width * m_height * (BANAN_FB_BPP / 8), PAGE_SIZE) * PAGE_SIZE,
90 PageTable::Flags::ReadWrite | PageTable::Flags::Present,
91 false
92 ));
93
94 return {};
95 }
96
97 BAN::ErrorOr<size_t> FramebufferDevice::read_impl(off_t offset, BAN::ByteSpan buffer)
98 {

Callers 3

createMethod · 0.45
cloneMethod · 0.45

Calls 3

range_page_countFunction · 0.85
map_range_atMethod · 0.45

Tested by

no test coverage detected