mirror of
https://github.com/SerenityOS/serenity
synced 2026-05-14 02:46:22 +02:00
Kernel/MM: Set the correct memory type for mmap()s
Make the MemoryType used by mmap() configurable by File::vmobject_and_memory_type_for_mmap overrides (previously called vmobject_for_mmap). All mmap()s were previously MemoryType::Normal.
This commit is contained in:
@@ -81,11 +81,18 @@ ErrorOr<void> InodeFile::ioctl(OpenFileDescription& description, unsigned reques
|
||||
}
|
||||
}
|
||||
|
||||
ErrorOr<NonnullLockRefPtr<Memory::VMObject>> InodeFile::vmobject_for_mmap(Process&, Memory::VirtualRange const& range, u64& offset, bool shared)
|
||||
ErrorOr<File::VMObjectAndMemoryType> InodeFile::vmobject_and_memory_type_for_mmap(Process&, Memory::VirtualRange const& range, u64& offset, bool shared)
|
||||
{
|
||||
if (shared)
|
||||
return TRY(Memory::SharedInodeVMObject::try_create_with_inode_and_range(inode(), offset, range.size()));
|
||||
return TRY(Memory::PrivateInodeVMObject::try_create_with_inode_and_range(inode(), offset, range.size()));
|
||||
if (shared) {
|
||||
return VMObjectAndMemoryType {
|
||||
.vmobject = TRY(Memory::SharedInodeVMObject::try_create_with_inode_and_range(inode(), offset, range.size())),
|
||||
.memory_type = Memory::MemoryType::Normal,
|
||||
};
|
||||
}
|
||||
return VMObjectAndMemoryType {
|
||||
.vmobject = TRY(Memory::PrivateInodeVMObject::try_create_with_inode_and_range(inode(), offset, range.size())),
|
||||
.memory_type = Memory::MemoryType::Normal,
|
||||
};
|
||||
}
|
||||
|
||||
ErrorOr<NonnullOwnPtr<KString>> InodeFile::pseudo_path(OpenFileDescription const&) const
|
||||
|
||||
Reference in New Issue
Block a user