summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/kernel/transfer_memory.cpp55
-rw-r--r--src/core/hle/kernel/transfer_memory.h96
2 files changed, 0 insertions, 151 deletions
diff --git a/src/core/hle/kernel/transfer_memory.cpp b/src/core/hle/kernel/transfer_memory.cpp
deleted file mode 100644
index 1dd65468d..000000000
--- a/src/core/hle/kernel/transfer_memory.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
1// Copyright 2019 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include "core/hle/kernel/k_page_table.h"
6#include "core/hle/kernel/k_resource_limit.h"
7#include "core/hle/kernel/kernel.h"
8#include "core/hle/kernel/process.h"
9#include "core/hle/kernel/transfer_memory.h"
10#include "core/hle/result.h"
11#include "core/memory.h"
12
13namespace Kernel {
14
15TransferMemory::TransferMemory(KernelCore& kernel, Core::Memory::Memory& memory)
16 : Object{kernel}, memory{memory} {}
17
18TransferMemory::~TransferMemory() {
19 // Release memory region when transfer memory is destroyed
20 Reset();
21 owner_process->GetResourceLimit()->Release(LimitableResource::TransferMemory, 1);
22}
23
24std::shared_ptr<TransferMemory> TransferMemory::Create(KernelCore& kernel,
25 Core::Memory::Memory& memory,
26 VAddr base_address, std::size_t size,
27 KMemoryPermission permissions) {
28 std::shared_ptr<TransferMemory> transfer_memory{
29 std::make_shared<TransferMemory>(kernel, memory)};
30
31 transfer_memory->base_address = base_address;
32 transfer_memory->size = size;
33 transfer_memory->owner_permissions = permissions;
34 transfer_memory->owner_process = kernel.CurrentProcess();
35
36 return transfer_memory;
37}
38
39u8* TransferMemory::GetPointer() {
40 return memory.GetPointer(base_address);
41}
42
43const u8* TransferMemory::GetPointer() const {
44 return memory.GetPointer(base_address);
45}
46
47ResultCode TransferMemory::Reserve() {
48 return owner_process->PageTable().ReserveTransferMemory(base_address, size, owner_permissions);
49}
50
51ResultCode TransferMemory::Reset() {
52 return owner_process->PageTable().ResetTransferMemory(base_address, size);
53}
54
55} // namespace Kernel
diff --git a/src/core/hle/kernel/transfer_memory.h b/src/core/hle/kernel/transfer_memory.h
deleted file mode 100644
index 59328c0fe..000000000
--- a/src/core/hle/kernel/transfer_memory.h
+++ /dev/null
@@ -1,96 +0,0 @@
1// Copyright 2019 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#pragma once
6
7#include <memory>
8
9#include "core/hle/kernel/k_memory_block.h"
10#include "core/hle/kernel/object.h"
11#include "core/hle/kernel/physical_memory.h"
12
13union ResultCode;
14
15namespace Core::Memory {
16class Memory;
17}
18
19namespace Kernel {
20
21class KernelCore;
22class Process;
23
24/// Defines the interface for transfer memory objects.
25///
26/// Transfer memory is typically used for the purpose of
27/// transferring memory between separate process instances,
28/// thus the name.
29///
30class TransferMemory final : public Object {
31public:
32 explicit TransferMemory(KernelCore& kernel, Core::Memory::Memory& memory);
33 ~TransferMemory() override;
34
35 static constexpr HandleType HANDLE_TYPE = HandleType::TransferMemory;
36
37 static std::shared_ptr<TransferMemory> Create(KernelCore& kernel, Core::Memory::Memory& memory,
38 VAddr base_address, std::size_t size,
39 KMemoryPermission permissions);
40
41 TransferMemory(const TransferMemory&) = delete;
42 TransferMemory& operator=(const TransferMemory&) = delete;
43
44 TransferMemory(TransferMemory&&) = delete;
45 TransferMemory& operator=(TransferMemory&&) = delete;
46
47 std::string GetTypeName() const override {
48 return "TransferMemory";
49 }
50
51 std::string GetName() const override {
52 return GetTypeName();
53 }
54
55 HandleType GetHandleType() const override {
56 return HANDLE_TYPE;
57 }
58
59 /// Gets a pointer to the backing block of this instance.
60 u8* GetPointer();
61
62 /// Gets a pointer to the backing block of this instance.
63 const u8* GetPointer() const;
64
65 /// Gets the size of the memory backing this instance in bytes.
66 constexpr std::size_t GetSize() const {
67 return size;
68 }
69
70 /// Reserves the region to be used for the transfer memory, called after the transfer memory is
71 /// created.
72 ResultCode Reserve();
73
74 /// Resets the region previously used for the transfer memory, called after the transfer memory
75 /// is closed.
76 ResultCode Reset();
77
78 void Finalize() override {}
79
80private:
81 /// The base address for the memory managed by this instance.
82 VAddr base_address{};
83
84 /// Size of the memory, in bytes, that this instance manages.
85 std::size_t size{};
86
87 /// The memory permissions that are applied to this instance.
88 KMemoryPermission owner_permissions{};
89
90 /// The process that this transfer memory instance was created under.
91 Process* owner_process{};
92
93 Core::Memory::Memory& memory;
94};
95
96} // namespace Kernel