1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 14:07:46 +00:00

Kernel: Hoist VM range allocation up to sys$mmap() itself

Instead of letting each File subclass do range allocation in their
mmap() override, do it up front in sys$mmap().

This makes us honor alignment requests for file-backed memory mappings
and simplifies the code somwhat.
This commit is contained in:
Andreas Kling 2021-01-25 14:52:36 +01:00
parent adcc1c1eff
commit ab14b0ac64
13 changed files with 26 additions and 36 deletions

View file

@ -172,19 +172,18 @@ u32 BXVGADevice::find_framebuffer_address()
return framebuffer_address;
}
KResultOr<Region*> BXVGADevice::mmap(Process& process, FileDescription&, VirtualAddress preferred_vaddr, size_t offset, size_t size, int prot, bool shared)
KResultOr<Region*> BXVGADevice::mmap(Process& process, FileDescription&, const Range& range, size_t offset, int prot, bool shared)
{
REQUIRE_PROMISE(video);
if (!shared)
return ENODEV;
ASSERT(offset == 0);
ASSERT(size == framebuffer_size_in_bytes());
ASSERT(range.size() == framebuffer_size_in_bytes());
auto vmobject = AnonymousVMObject::create_for_physical_range(m_framebuffer_address, framebuffer_size_in_bytes());
if (!vmobject)
return ENOMEM;
return process.allocate_region_with_vmobject(
preferred_vaddr,
framebuffer_size_in_bytes(),
range,
vmobject.release_nonnull(),
0,
"BXVGA Framebuffer",