summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/CMakeLists.txt2
-rw-r--r--src/core/hle/kernel/kernel.cpp2
-rw-r--r--src/core/hle/kernel/mutex.cpp1
-rw-r--r--src/core/hle/kernel/object_address_table.cpp36
-rw-r--r--src/core/hle/kernel/object_address_table.h62
-rw-r--r--src/core/hle/kernel/svc.cpp1
6 files changed, 0 insertions, 104 deletions
diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt
index 3386c2231..3a4ddc14c 100644
--- a/src/core/CMakeLists.txt
+++ b/src/core/CMakeLists.txt
@@ -67,8 +67,6 @@ add_library(core STATIC
67 hle/kernel/memory.h 67 hle/kernel/memory.h
68 hle/kernel/mutex.cpp 68 hle/kernel/mutex.cpp
69 hle/kernel/mutex.h 69 hle/kernel/mutex.h
70 hle/kernel/object_address_table.cpp
71 hle/kernel/object_address_table.h
72 hle/kernel/process.cpp 70 hle/kernel/process.cpp
73 hle/kernel/process.h 71 hle/kernel/process.h
74 hle/kernel/resource_limit.cpp 72 hle/kernel/resource_limit.cpp
diff --git a/src/core/hle/kernel/kernel.cpp b/src/core/hle/kernel/kernel.cpp
index 1beb98566..3eb4f465c 100644
--- a/src/core/hle/kernel/kernel.cpp
+++ b/src/core/hle/kernel/kernel.cpp
@@ -5,7 +5,6 @@
5#include "core/hle/kernel/handle_table.h" 5#include "core/hle/kernel/handle_table.h"
6#include "core/hle/kernel/kernel.h" 6#include "core/hle/kernel/kernel.h"
7#include "core/hle/kernel/memory.h" 7#include "core/hle/kernel/memory.h"
8#include "core/hle/kernel/object_address_table.h"
9#include "core/hle/kernel/process.h" 8#include "core/hle/kernel/process.h"
10#include "core/hle/kernel/resource_limit.h" 9#include "core/hle/kernel/resource_limit.h"
11#include "core/hle/kernel/thread.h" 10#include "core/hle/kernel/thread.h"
@@ -33,7 +32,6 @@ void Init(u32 system_mode) {
33void Shutdown() { 32void Shutdown() {
34 // Free all kernel objects 33 // Free all kernel objects
35 g_handle_table.Clear(); 34 g_handle_table.Clear();
36 g_object_address_table.Clear();
37 35
38 Kernel::ThreadingShutdown(); 36 Kernel::ThreadingShutdown();
39 37
diff --git a/src/core/hle/kernel/mutex.cpp b/src/core/hle/kernel/mutex.cpp
index feb7b88d2..f12c3a5e5 100644
--- a/src/core/hle/kernel/mutex.cpp
+++ b/src/core/hle/kernel/mutex.cpp
@@ -11,7 +11,6 @@
11#include "core/hle/kernel/handle_table.h" 11#include "core/hle/kernel/handle_table.h"
12#include "core/hle/kernel/kernel.h" 12#include "core/hle/kernel/kernel.h"
13#include "core/hle/kernel/mutex.h" 13#include "core/hle/kernel/mutex.h"
14#include "core/hle/kernel/object_address_table.h"
15#include "core/hle/kernel/thread.h" 14#include "core/hle/kernel/thread.h"
16 15
17namespace Kernel { 16namespace Kernel {
diff --git a/src/core/hle/kernel/object_address_table.cpp b/src/core/hle/kernel/object_address_table.cpp
deleted file mode 100644
index ca8a833a1..000000000
--- a/src/core/hle/kernel/object_address_table.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
1// Copyright 2018 yuzu emulator team
2// Licensed under GPLv2 or any later version
3// Refer to the license.txt file included.
4
5#include <utility>
6
7#include "common/assert.h"
8#include "core/hle/kernel/object_address_table.h"
9
10namespace Kernel {
11
12ObjectAddressTable g_object_address_table;
13
14void ObjectAddressTable::Insert(VAddr addr, SharedPtr<Object> obj) {
15 ASSERT_MSG(objects.find(addr) == objects.end(), "Object already exists with addr=0x{:X}", addr);
16 objects[addr] = std::move(obj);
17}
18
19void ObjectAddressTable::Close(VAddr addr) {
20 ASSERT_MSG(objects.find(addr) != objects.end(), "Object does not exist with addr=0x{:X}", addr);
21 objects.erase(addr);
22}
23
24SharedPtr<Object> ObjectAddressTable::GetGeneric(VAddr addr) const {
25 auto iter = objects.find(addr);
26 if (iter != objects.end()) {
27 return iter->second;
28 }
29 return {};
30}
31
32void ObjectAddressTable::Clear() {
33 objects.clear();
34}
35
36} // namespace Kernel
diff --git a/src/core/hle/kernel/object_address_table.h b/src/core/hle/kernel/object_address_table.h
deleted file mode 100644
index a09004b32..000000000
--- a/src/core/hle/kernel/object_address_table.h
+++ /dev/null
@@ -1,62 +0,0 @@
1// Copyright 2018 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 <map>
8#include "common/common_types.h"
9#include "core/hle/kernel/kernel.h"
10
11namespace Kernel {
12
13/**
14 * This class is used to keep a table of Kernel objects and their respective addresses in emulated
15 * memory. For certain Switch SVCs, Kernel objects are referenced by an address to an object the
16 * guest application manages, so we use this table to look these kernel objects up. This is similiar
17 * to the HandleTable class.
18 */
19class ObjectAddressTable final : NonCopyable {
20public:
21 ObjectAddressTable() = default;
22
23 /**
24 * Inserts an object and address pair into the table.
25 */
26 void Insert(VAddr addr, SharedPtr<Object> obj);
27
28 /**
29 * Closes an object by its address, removing it from the table and decreasing the object's
30 * ref-count.
31 * @return `RESULT_SUCCESS` or one of the following errors:
32 * - `ERR_INVALID_HANDLE`: an invalid handle was passed in.
33 */
34 void Close(VAddr addr);
35
36 /**
37 * Looks up an object by its address.
38 * @return Pointer to the looked-up object, or `nullptr` if the handle is not valid.
39 */
40 SharedPtr<Object> GetGeneric(VAddr addr) const;
41
42 /**
43 * Looks up an object by its address while verifying its type.
44 * @return Pointer to the looked-up object, or `nullptr` if the handle is not valid or its
45 * type differs from the requested one.
46 */
47 template <class T>
48 SharedPtr<T> Get(VAddr addr) const {
49 return DynamicObjectCast<T>(GetGeneric(addr));
50 }
51
52 /// Closes all addresses held in this table.
53 void Clear();
54
55private:
56 /// Stores the Object referenced by the address
57 std::map<VAddr, SharedPtr<Object>> objects;
58};
59
60extern ObjectAddressTable g_object_address_table;
61
62} // namespace Kernel
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index 0b439401a..0488cf286 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -17,7 +17,6 @@
17#include "core/hle/kernel/event.h" 17#include "core/hle/kernel/event.h"
18#include "core/hle/kernel/handle_table.h" 18#include "core/hle/kernel/handle_table.h"
19#include "core/hle/kernel/mutex.h" 19#include "core/hle/kernel/mutex.h"
20#include "core/hle/kernel/object_address_table.h"
21#include "core/hle/kernel/process.h" 20#include "core/hle/kernel/process.h"
22#include "core/hle/kernel/resource_limit.h" 21#include "core/hle/kernel/resource_limit.h"
23#include "core/hle/kernel/shared_memory.h" 22#include "core/hle/kernel/shared_memory.h"