Browse Source

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.
nce_cpp
bunnei 4 years ago
parent
commit
af11abed3f
  1. 5
      src/core/hle/kernel/hle_ipc.h
  2. 9
      src/core/hle/kernel/k_server_session.cpp

5
src/core/hle/kernel/hle_ipc.h

@ -341,10 +341,6 @@ public:
return *thread;
}
bool IsThreadWaiting() const {
return is_thread_waiting;
}
private:
friend class IPC::ResponseBuilder;
@ -379,7 +375,6 @@ private:
u32 domain_offset{};
std::shared_ptr<SessionRequestManager> manager;
bool is_thread_waiting{};
KernelCore& kernel;
Core::Memory::Memory& memory;

9
src/core/hle/kernel/k_server_session.cpp

@ -171,13 +171,8 @@ ResultCode KServerSession::CompleteSyncRequest(HLERequestContext& context) {
convert_to_domain = false;
}
// Some service requests require the thread to block
{
KScopedSchedulerLock lock(kernel);
if (!context.IsThreadWaiting()) {
context.GetThread().EndWait(result);
}
}
// The calling thread is waiting for this request to complete, so wake it up.
context.GetThread().EndWait(result);
return result;
}

Loading…
Cancel
Save