AK: Make MappedFile heap-allocated and ref-counted

Let's adapt this class a bit better to how it's actually being used.

Instead of having valid/invalid states and storing an error in case
it's invalid, a MappedFile is now always valid, and the factory
function that creates it will return an OSError if mapping fails.
This commit is contained in:
Andreas Kling
2021-01-10 15:55:54 +01:00
parent 70fce5c4c7
commit 2f3b901f7f
36 changed files with 184 additions and 199 deletions

View File

@@ -60,9 +60,10 @@ DisassemblyModel::DisassemblyModel(Profile& profile, ProfileNode& node)
FlatPtr base_address = 0;
if (m_node.address() >= 0xc0000000) {
if (!m_kernel_file) {
m_kernel_file = new MappedFile("/boot/Kernel");
if (!m_kernel_file->is_valid())
auto file_or_error = MappedFile::map("/boot/Kernel");
if (file_or_error.is_error())
return;
m_kernel_file = file_or_error.release_value();
}
kernel_elf = make<ELF::Image>((const u8*)m_kernel_file->data(), m_kernel_file->size());
elf = kernel_elf.ptr();