From 17a12c8a3027cdbfbf1032c2f6b96594b3d3d7b2 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 6 Sep 2021 02:09:42 +0200 Subject: [PATCH] Kernel: Use TRY() in FramebufferDevice --- Kernel/Graphics/FramebufferDevice.cpp | 40 ++++++--------------------- 1 file changed, 8 insertions(+), 32 deletions(-) diff --git a/Kernel/Graphics/FramebufferDevice.cpp b/Kernel/Graphics/FramebufferDevice.cpp index a0533d1604..982f221fe6 100644 --- a/Kernel/Graphics/FramebufferDevice.cpp +++ b/Kernel/Graphics/FramebufferDevice.cpp @@ -36,21 +36,9 @@ KResultOr FramebufferDevice::mmap(Process& process, FileDescrip if (range.size() != Memory::page_round_up(framebuffer_size_in_bytes())) return EOVERFLOW; - auto maybe_vmobject = Memory::AnonymousVMObject::try_create_for_physical_range(m_framebuffer_address, Memory::page_round_up(framebuffer_size_in_bytes())); - if (maybe_vmobject.is_error()) - return maybe_vmobject.error(); - m_userspace_real_framebuffer_vmobject = maybe_vmobject.release_value(); - - auto maybe_real_framebuffer_vmobject = Memory::AnonymousVMObject::try_create_for_physical_range(m_framebuffer_address, Memory::page_round_up(framebuffer_size_in_bytes())); - if (maybe_real_framebuffer_vmobject.is_error()) - return maybe_real_framebuffer_vmobject.error(); - m_real_framebuffer_vmobject = maybe_real_framebuffer_vmobject.release_value(); - - auto maybe_swapped_framebuffer_vmobject = Memory::AnonymousVMObject::try_create_with_size(Memory::page_round_up(framebuffer_size_in_bytes()), AllocationStrategy::AllocateNow); - if (maybe_swapped_framebuffer_vmobject.is_error()) - return maybe_swapped_framebuffer_vmobject.error(); - m_swapped_framebuffer_vmobject = maybe_swapped_framebuffer_vmobject.release_value(); - + m_userspace_real_framebuffer_vmobject = TRY(Memory::AnonymousVMObject::try_create_for_physical_range(m_framebuffer_address, Memory::page_round_up(framebuffer_size_in_bytes()))); + m_real_framebuffer_vmobject = TRY(Memory::AnonymousVMObject::try_create_for_physical_range(m_framebuffer_address, Memory::page_round_up(framebuffer_size_in_bytes()))); + m_swapped_framebuffer_vmobject = TRY(Memory::AnonymousVMObject::try_create_with_size(Memory::page_round_up(framebuffer_size_in_bytes()), AllocationStrategy::AllocateNow)); m_real_framebuffer_region = TRY(MM.allocate_kernel_region_with_vmobject(*m_real_framebuffer_vmobject, Memory::page_round_up(framebuffer_size_in_bytes()), "Framebuffer", Memory::Region::Access::ReadWrite)); m_swapped_framebuffer_region = TRY(MM.allocate_kernel_region_with_vmobject(*m_swapped_framebuffer_vmobject, Memory::page_round_up(framebuffer_size_in_bytes()), "Framebuffer Swap (Blank)", Memory::Region::Access::ReadWrite)); @@ -60,17 +48,14 @@ KResultOr FramebufferDevice::mmap(Process& process, FileDescrip } else { chosen_vmobject = m_swapped_framebuffer_vmobject; } - auto result = process.address_space().allocate_region_with_vmobject( + m_userspace_framebuffer_region = TRY(process.address_space().allocate_region_with_vmobject( range, chosen_vmobject.release_nonnull(), 0, "Framebuffer", prot, - shared); - if (!result.is_error()) { - m_userspace_framebuffer_region = result.value(); - } - return result; + shared)); + return m_userspace_framebuffer_region; } void FramebufferDevice::deactivate_writes() @@ -108,19 +93,10 @@ UNMAP_AFTER_INIT KResult FramebufferDevice::initialize() { // FIXME: Would be nice to be able to unify this with mmap above, but this // function is UNMAP_AFTER_INIT for the time being. - auto maybe_real_framebuffer_vmobject = Memory::AnonymousVMObject::try_create_for_physical_range(m_framebuffer_address, Memory::page_round_up(framebuffer_size_in_bytes())); - if (maybe_real_framebuffer_vmobject.is_error()) - return maybe_real_framebuffer_vmobject.error(); - m_real_framebuffer_vmobject = maybe_real_framebuffer_vmobject.release_value(); - - auto maybe_swapped_framebuffer_vmobject = Memory::AnonymousVMObject::try_create_with_size(Memory::page_round_up(framebuffer_size_in_bytes()), AllocationStrategy::AllocateNow); - if (maybe_swapped_framebuffer_vmobject.is_error()) - return maybe_swapped_framebuffer_vmobject.error(); - m_swapped_framebuffer_vmobject = maybe_swapped_framebuffer_vmobject.release_value(); - + m_real_framebuffer_vmobject = TRY(Memory::AnonymousVMObject::try_create_for_physical_range(m_framebuffer_address, Memory::page_round_up(framebuffer_size_in_bytes()))); + m_swapped_framebuffer_vmobject = TRY(Memory::AnonymousVMObject::try_create_with_size(Memory::page_round_up(framebuffer_size_in_bytes()), AllocationStrategy::AllocateNow)); m_real_framebuffer_region = TRY(MM.allocate_kernel_region_with_vmobject(*m_real_framebuffer_vmobject, Memory::page_round_up(framebuffer_size_in_bytes()), "Framebuffer", Memory::Region::Access::ReadWrite)); m_swapped_framebuffer_region = TRY(MM.allocate_kernel_region_with_vmobject(*m_swapped_framebuffer_vmobject, Memory::page_round_up(framebuffer_size_in_bytes()), "Framebuffer Swap (Blank)", Memory::Region::Access::ReadWrite)); - return KSuccess; }