summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel
diff options
context:
space:
mode:
authorGravatar bunnei2021-01-16 00:25:29 -0800
committerGravatar bunnei2021-01-28 21:42:26 -0800
commitff186b2498e5f3119e0d03a859754722e1948c62 (patch)
tree3bfe09f91736044f8187af6df737f61012e55801 /src/core/hle/kernel
parentcore: hle: kernel: svc_results: Populate with several missing error codes. (diff)
downloadyuzu-ff186b2498e5f3119e0d03a859754722e1948c62.tar.gz
yuzu-ff186b2498e5f3119e0d03a859754722e1948c62.tar.xz
yuzu-ff186b2498e5f3119e0d03a859754722e1948c62.zip
core: hle: kernel: object: Implement Finalize() virtual method.
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r--src/core/hle/kernel/client_port.h2
-rw-r--r--src/core/hle/kernel/client_session.h2
-rw-r--r--src/core/hle/kernel/handle_table.cpp4
-rw-r--r--src/core/hle/kernel/k_synchronization_object.cpp2
-rw-r--r--src/core/hle/kernel/object.h2
-rw-r--r--src/core/hle/kernel/process.h2
-rw-r--r--src/core/hle/kernel/readable_event.h2
-rw-r--r--src/core/hle/kernel/resource_limit.h2
-rw-r--r--src/core/hle/kernel/server_port.h2
-rw-r--r--src/core/hle/kernel/server_session.h2
-rw-r--r--src/core/hle/kernel/session.h2
-rw-r--r--src/core/hle/kernel/shared_memory.h2
-rw-r--r--src/core/hle/kernel/transfer_memory.h2
-rw-r--r--src/core/hle/kernel/writable_event.cpp4
-rw-r--r--src/core/hle/kernel/writable_event.h3
15 files changed, 29 insertions, 6 deletions
diff --git a/src/core/hle/kernel/client_port.h b/src/core/hle/kernel/client_port.h
index 9762bbf0d..77559ebf9 100644
--- a/src/core/hle/kernel/client_port.h
+++ b/src/core/hle/kernel/client_port.h
@@ -51,6 +51,8 @@ public:
51 */ 51 */
52 void ConnectionClosed(); 52 void ConnectionClosed();
53 53
54 void Finalize() override {}
55
54private: 56private:
55 std::shared_ptr<ServerPort> server_port; ///< ServerPort associated with this client port. 57 std::shared_ptr<ServerPort> server_port; ///< ServerPort associated with this client port.
56 u32 max_sessions = 0; ///< Maximum number of simultaneous sessions the port can have 58 u32 max_sessions = 0; ///< Maximum number of simultaneous sessions the port can have
diff --git a/src/core/hle/kernel/client_session.h b/src/core/hle/kernel/client_session.h
index a914c0990..85aafeaf4 100644
--- a/src/core/hle/kernel/client_session.h
+++ b/src/core/hle/kernel/client_session.h
@@ -51,6 +51,8 @@ public:
51 51
52 bool IsSignaled() const override; 52 bool IsSignaled() const override;
53 53
54 void Finalize() override {}
55
54private: 56private:
55 static ResultVal<std::shared_ptr<ClientSession>> Create(KernelCore& kernel, 57 static ResultVal<std::shared_ptr<ClientSession>> Create(KernelCore& kernel,
56 std::shared_ptr<Session> parent, 58 std::shared_ptr<Session> parent,
diff --git a/src/core/hle/kernel/handle_table.cpp b/src/core/hle/kernel/handle_table.cpp
index 10a4e0510..1a2fa9cd8 100644
--- a/src/core/hle/kernel/handle_table.cpp
+++ b/src/core/hle/kernel/handle_table.cpp
@@ -89,6 +89,10 @@ ResultCode HandleTable::Close(Handle handle) {
89 89
90 const u16 slot = GetSlot(handle); 90 const u16 slot = GetSlot(handle);
91 91
92 if (objects[slot].use_count() == 1) {
93 objects[slot]->Finalize();
94 }
95
92 objects[slot] = nullptr; 96 objects[slot] = nullptr;
93 97
94 generations[slot] = next_free_slot; 98 generations[slot] = next_free_slot;
diff --git a/src/core/hle/kernel/k_synchronization_object.cpp b/src/core/hle/kernel/k_synchronization_object.cpp
index 61432fef8..18e7026f5 100644
--- a/src/core/hle/kernel/k_synchronization_object.cpp
+++ b/src/core/hle/kernel/k_synchronization_object.cpp
@@ -136,7 +136,7 @@ ResultCode KSynchronizationObject::Wait(KernelCore& kernel, s32* out_index,
136 136
137KSynchronizationObject::KSynchronizationObject(KernelCore& kernel) : Object{kernel} {} 137KSynchronizationObject::KSynchronizationObject(KernelCore& kernel) : Object{kernel} {}
138 138
139KSynchronizationObject ::~KSynchronizationObject() = default; 139KSynchronizationObject::~KSynchronizationObject() = default;
140 140
141void KSynchronizationObject::NotifyAvailable(ResultCode result) { 141void KSynchronizationObject::NotifyAvailable(ResultCode result) {
142 KScopedSchedulerLock lock(kernel); 142 KScopedSchedulerLock lock(kernel);
diff --git a/src/core/hle/kernel/object.h b/src/core/hle/kernel/object.h
index 27124ef67..be7fcb5fb 100644
--- a/src/core/hle/kernel/object.h
+++ b/src/core/hle/kernel/object.h
@@ -61,6 +61,8 @@ public:
61 */ 61 */
62 bool IsWaitable() const; 62 bool IsWaitable() const;
63 63
64 virtual void Finalize() = 0;
65
64protected: 66protected:
65 /// The kernel instance this object was created under. 67 /// The kernel instance this object was created under.
66 KernelCore& kernel; 68 KernelCore& kernel;
diff --git a/src/core/hle/kernel/process.h b/src/core/hle/kernel/process.h
index 5a2cfdb36..917babfb4 100644
--- a/src/core/hle/kernel/process.h
+++ b/src/core/hle/kernel/process.h
@@ -308,6 +308,8 @@ public:
308 308
309 bool IsSignaled() const override; 309 bool IsSignaled() const override;
310 310
311 void Finalize() override {}
312
311 /////////////////////////////////////////////////////////////////////////////////////////////// 313 ///////////////////////////////////////////////////////////////////////////////////////////////
312 // Thread-local storage management 314 // Thread-local storage management
313 315
diff --git a/src/core/hle/kernel/readable_event.h b/src/core/hle/kernel/readable_event.h
index 34e477274..2195710c2 100644
--- a/src/core/hle/kernel/readable_event.h
+++ b/src/core/hle/kernel/readable_event.h
@@ -47,6 +47,8 @@ public:
47 47
48 bool IsSignaled() const override; 48 bool IsSignaled() const override;
49 49
50 void Finalize() override {}
51
50private: 52private:
51 explicit ReadableEvent(KernelCore& kernel); 53 explicit ReadableEvent(KernelCore& kernel);
52 54
diff --git a/src/core/hle/kernel/resource_limit.h b/src/core/hle/kernel/resource_limit.h
index 936cc4d0f..464d4f2a6 100644
--- a/src/core/hle/kernel/resource_limit.h
+++ b/src/core/hle/kernel/resource_limit.h
@@ -85,6 +85,8 @@ public:
85 */ 85 */
86 ResultCode SetLimitValue(ResourceType resource, s64 value); 86 ResultCode SetLimitValue(ResourceType resource, s64 value);
87 87
88 void Finalize() override {}
89
88private: 90private:
89 // TODO(Subv): Increment resource limit current values in their respective Kernel::T::Create 91 // TODO(Subv): Increment resource limit current values in their respective Kernel::T::Create
90 // functions 92 // functions
diff --git a/src/core/hle/kernel/server_port.h b/src/core/hle/kernel/server_port.h
index 6470df993..29b4f2509 100644
--- a/src/core/hle/kernel/server_port.h
+++ b/src/core/hle/kernel/server_port.h
@@ -81,6 +81,8 @@ public:
81 81
82 bool IsSignaled() const override; 82 bool IsSignaled() const override;
83 83
84 void Finalize() override {}
85
84private: 86private:
85 /// ServerSessions waiting to be accepted by the port 87 /// ServerSessions waiting to be accepted by the port
86 std::vector<std::shared_ptr<ServerSession>> pending_sessions; 88 std::vector<std::shared_ptr<ServerSession>> pending_sessions;
diff --git a/src/core/hle/kernel/server_session.h b/src/core/hle/kernel/server_session.h
index d45cddec3..c42d5ee59 100644
--- a/src/core/hle/kernel/server_session.h
+++ b/src/core/hle/kernel/server_session.h
@@ -126,6 +126,8 @@ public:
126 126
127 bool IsSignaled() const override; 127 bool IsSignaled() const override;
128 128
129 void Finalize() override {}
130
129private: 131private:
130 /// Queues a sync request from the emulated application. 132 /// Queues a sync request from the emulated application.
131 ResultCode QueueSyncRequest(std::shared_ptr<KThread> thread, Core::Memory::Memory& memory); 133 ResultCode QueueSyncRequest(std::shared_ptr<KThread> thread, Core::Memory::Memory& memory);
diff --git a/src/core/hle/kernel/session.h b/src/core/hle/kernel/session.h
index f6dd2c1d2..fa3c5651a 100644
--- a/src/core/hle/kernel/session.h
+++ b/src/core/hle/kernel/session.h
@@ -39,6 +39,8 @@ public:
39 39
40 bool IsSignaled() const override; 40 bool IsSignaled() const override;
41 41
42 void Finalize() override {}
43
42 std::shared_ptr<ClientSession> Client() { 44 std::shared_ptr<ClientSession> Client() {
43 if (auto result{client.lock()}) { 45 if (auto result{client.lock()}) {
44 return result; 46 return result;
diff --git a/src/core/hle/kernel/shared_memory.h b/src/core/hle/kernel/shared_memory.h
index 0ef87235c..623bd8b11 100644
--- a/src/core/hle/kernel/shared_memory.h
+++ b/src/core/hle/kernel/shared_memory.h
@@ -71,6 +71,8 @@ public:
71 return device_memory.GetPointer(physical_address + offset); 71 return device_memory.GetPointer(physical_address + offset);
72 } 72 }
73 73
74 void Finalize() override {}
75
74private: 76private:
75 Core::DeviceMemory& device_memory; 77 Core::DeviceMemory& device_memory;
76 Process* owner_process{}; 78 Process* owner_process{};
diff --git a/src/core/hle/kernel/transfer_memory.h b/src/core/hle/kernel/transfer_memory.h
index 05e9f7464..777799d12 100644
--- a/src/core/hle/kernel/transfer_memory.h
+++ b/src/core/hle/kernel/transfer_memory.h
@@ -72,6 +72,8 @@ public:
72 /// is closed. 72 /// is closed.
73 ResultCode Reset(); 73 ResultCode Reset();
74 74
75 void Finalize() override {}
76
75private: 77private:
76 /// The base address for the memory managed by this instance. 78 /// The base address for the memory managed by this instance.
77 VAddr base_address{}; 79 VAddr base_address{};
diff --git a/src/core/hle/kernel/writable_event.cpp b/src/core/hle/kernel/writable_event.cpp
index dbe34472b..142212ee4 100644
--- a/src/core/hle/kernel/writable_event.cpp
+++ b/src/core/hle/kernel/writable_event.cpp
@@ -38,8 +38,4 @@ void WritableEvent::Clear() {
38 readable->Clear(); 38 readable->Clear();
39} 39}
40 40
41bool WritableEvent::IsSignaled() const {
42 return readable->IsSignaled();
43}
44
45} // namespace Kernel 41} // namespace Kernel
diff --git a/src/core/hle/kernel/writable_event.h b/src/core/hle/kernel/writable_event.h
index 6189cf65c..467eb2c21 100644
--- a/src/core/hle/kernel/writable_event.h
+++ b/src/core/hle/kernel/writable_event.h
@@ -46,7 +46,8 @@ public:
46 46
47 void Signal(); 47 void Signal();
48 void Clear(); 48 void Clear();
49 bool IsSignaled() const; 49
50 void Finalize() override {}
50 51
51private: 52private:
52 explicit WritableEvent(KernelCore& kernel); 53 explicit WritableEvent(KernelCore& kernel);