summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar bunnei2022-01-17 16:51:18 -0800
committerGravatar bunnei2022-01-20 17:08:00 -0800
commitad53dc22fde4b4227fa78088cbe30b5f5b6617ba (patch)
tree8a3c21b177302e4fed9771474a26d52c1c8a84dc
parenthle: kernel: KThread: Ensure dummy threads never call EndWait. (diff)
downloadyuzu-ad53dc22fde4b4227fa78088cbe30b5f5b6617ba.tar.gz
yuzu-ad53dc22fde4b4227fa78088cbe30b5f5b6617ba.tar.xz
yuzu-ad53dc22fde4b4227fa78088cbe30b5f5b6617ba.zip
hle: kernel: KServerSession: Simplify CompleteSyncRequest EndWait.
- Considering is_thread_waiting is never set, so we can remove IsThreadWaiting. - KThread::EndWait will take the scheduler lock, so we can remove the redundant lock.
Diffstat (limited to '')
-rw-r--r--src/core/hle/kernel/hle_ipc.h5
-rw-r--r--src/core/hle/kernel/k_server_session.cpp9
2 files changed, 2 insertions, 12 deletions
diff --git a/src/core/hle/kernel/hle_ipc.h b/src/core/hle/kernel/hle_ipc.h
index 55e6fb9f7..754b41ff6 100644
--- a/src/core/hle/kernel/hle_ipc.h
+++ b/src/core/hle/kernel/hle_ipc.h
@@ -341,10 +341,6 @@ public:
341 return *thread; 341 return *thread;
342 } 342 }
343 343
344 bool IsThreadWaiting() const {
345 return is_thread_waiting;
346 }
347
348private: 344private:
349 friend class IPC::ResponseBuilder; 345 friend class IPC::ResponseBuilder;
350 346
@@ -379,7 +375,6 @@ private:
379 u32 domain_offset{}; 375 u32 domain_offset{};
380 376
381 std::shared_ptr<SessionRequestManager> manager; 377 std::shared_ptr<SessionRequestManager> manager;
382 bool is_thread_waiting{};
383 378
384 KernelCore& kernel; 379 KernelCore& kernel;
385 Core::Memory::Memory& memory; 380 Core::Memory::Memory& memory;
diff --git a/src/core/hle/kernel/k_server_session.cpp b/src/core/hle/kernel/k_server_session.cpp
index d4e4a6b06..2ea995d9a 100644
--- a/src/core/hle/kernel/k_server_session.cpp
+++ b/src/core/hle/kernel/k_server_session.cpp
@@ -171,13 +171,8 @@ ResultCode KServerSession::CompleteSyncRequest(HLERequestContext& context) {
171 convert_to_domain = false; 171 convert_to_domain = false;
172 } 172 }
173 173
174 // Some service requests require the thread to block 174 // The calling thread is waiting for this request to complete, so wake it up.
175 { 175 context.GetThread().EndWait(result);
176 KScopedSchedulerLock lock(kernel);
177 if (!context.IsThreadWaiting()) {
178 context.GetThread().EndWait(result);
179 }
180 }
181 176
182 return result; 177 return result;
183} 178}