From a4e48dce77ba883c7260a7579f3ec53ba989b1f4 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Sat, 18 May 2019 04:17:53 +0200 Subject: [PATCH] Kernel: SharedMemory should implement mmap(). --- Kernel/FileSystem/FileDescriptor.cpp | 6 ------ Kernel/SharedMemory.cpp | 7 +++++++ Kernel/SharedMemory.h | 1 + 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/Kernel/FileSystem/FileDescriptor.cpp b/Kernel/FileSystem/FileDescriptor.cpp index f8483de195..c067c423a3 100644 --- a/Kernel/FileSystem/FileDescriptor.cpp +++ b/Kernel/FileSystem/FileDescriptor.cpp @@ -324,12 +324,6 @@ KResultOr FileDescriptor::mmap(Process& process, LinearAddress laddr, s if (m_file) return m_file->mmap(process, laddr, offset, size); - if (is_shared_memory()) { - if (!shared_memory()->vmo()) - return KResult(-ENODEV); - return process.allocate_region_with_vmo(laddr, size, *shared_memory()->vmo(), offset, shared_memory()->name(), true, true); - } - if (!is_fsfile()) return KResult(-ENODEV); diff --git a/Kernel/SharedMemory.cpp b/Kernel/SharedMemory.cpp index d489891512..b371566828 100644 --- a/Kernel/SharedMemory.cpp +++ b/Kernel/SharedMemory.cpp @@ -88,3 +88,10 @@ int SharedMemory::write(FileDescriptor&, const byte* data, int data_size) // FIXME: Implement. ASSERT_NOT_REACHED(); } + +KResultOr SharedMemory::mmap(Process& process, LinearAddress laddr, size_t offset, size_t size) +{ + if (!vmo()) + return KResult(-ENODEV); + return process.allocate_region_with_vmo(laddr, size, *vmo(), offset, name(), true, true); +} diff --git a/Kernel/SharedMemory.h b/Kernel/SharedMemory.h index 402d2acccb..ffbb7ac468 100644 --- a/Kernel/SharedMemory.h +++ b/Kernel/SharedMemory.h @@ -31,6 +31,7 @@ private: virtual String absolute_path(FileDescriptor&) const override; virtual const char* class_name() const override { return "SharedMemory"; } virtual bool is_shared_memory() const override { return true; } + virtual KResultOr mmap(Process&, LinearAddress, size_t offset, size_t size) override; SharedMemory(const String& name, uid_t, gid_t, mode_t);