diff options
author | bunnei <bunneidev@gmail.com> | 2021-02-13 03:21:30 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-02-13 03:21:30 +0100 |
commit | c86d770af945888c42e45eee2101ea7e0a39fd68 (patch) | |
tree | fc563f28673dfe851cfaf665951423e0ad759025 /src/core/hle/kernel/shared_memory.cpp | |
parent | kernel: Unify result codes (#5890) (diff) | |
parent | kernel: More accurately reserve and release resources (diff) | |
download | yuzu-c86d770af945888c42e45eee2101ea7e0a39fd68.tar yuzu-c86d770af945888c42e45eee2101ea7e0a39fd68.tar.gz yuzu-c86d770af945888c42e45eee2101ea7e0a39fd68.tar.bz2 yuzu-c86d770af945888c42e45eee2101ea7e0a39fd68.tar.lz yuzu-c86d770af945888c42e45eee2101ea7e0a39fd68.tar.xz yuzu-c86d770af945888c42e45eee2101ea7e0a39fd68.tar.zst yuzu-c86d770af945888c42e45eee2101ea7e0a39fd68.zip |
Diffstat (limited to 'src/core/hle/kernel/shared_memory.cpp')
-rw-r--r-- | src/core/hle/kernel/shared_memory.cpp | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/core/hle/kernel/shared_memory.cpp b/src/core/hle/kernel/shared_memory.cpp index 0cd467110..2eadd51d7 100644 --- a/src/core/hle/kernel/shared_memory.cpp +++ b/src/core/hle/kernel/shared_memory.cpp @@ -4,6 +4,7 @@ #include "common/assert.h" #include "core/core.h" +#include "core/hle/kernel/k_scoped_resource_reservation.h" #include "core/hle/kernel/kernel.h" #include "core/hle/kernel/memory/page_table.h" #include "core/hle/kernel/shared_memory.h" @@ -13,7 +14,9 @@ namespace Kernel { SharedMemory::SharedMemory(KernelCore& kernel, Core::DeviceMemory& device_memory) : Object{kernel}, device_memory{device_memory} {} -SharedMemory::~SharedMemory() = default; +SharedMemory::~SharedMemory() { + kernel.GetSystemResourceLimit()->Release(LimitableResource::PhysicalMemory, size); +} std::shared_ptr<SharedMemory> SharedMemory::Create( KernelCore& kernel, Core::DeviceMemory& device_memory, Process* owner_process, @@ -21,6 +24,11 @@ std::shared_ptr<SharedMemory> SharedMemory::Create( Memory::MemoryPermission user_permission, PAddr physical_address, std::size_t size, std::string name) { + const auto resource_limit = kernel.GetSystemResourceLimit(); + KScopedResourceReservation memory_reservation(resource_limit, LimitableResource::PhysicalMemory, + size); + ASSERT(memory_reservation.Succeeded()); + std::shared_ptr<SharedMemory> shared_memory{ std::make_shared<SharedMemory>(kernel, device_memory)}; @@ -32,6 +40,7 @@ std::shared_ptr<SharedMemory> SharedMemory::Create( shared_memory->size = size; shared_memory->name = name; + memory_reservation.Commit(); return shared_memory; } |