diff options
author | Subv <subv2112@gmail.com> | 2017-06-21 00:33:28 +0200 |
---|---|---|
committer | Subv <subv2112@gmail.com> | 2017-06-25 21:47:25 +0200 |
commit | 8feeb81af27ea8fed6888e26c1024be3b3231d48 (patch) | |
tree | 56944624b22abbcbd4e55233fd41f71e45abcef7 /src/core/hle/kernel/server_session.h | |
parent | Services/UDS: Set the proper bit in the ConnectionStatus structure when creating a network. (#2738) (diff) | |
download | yuzu-8feeb81af27ea8fed6888e26c1024be3b3231d48.tar yuzu-8feeb81af27ea8fed6888e26c1024be3b3231d48.tar.gz yuzu-8feeb81af27ea8fed6888e26c1024be3b3231d48.tar.bz2 yuzu-8feeb81af27ea8fed6888e26c1024be3b3231d48.tar.lz yuzu-8feeb81af27ea8fed6888e26c1024be3b3231d48.tar.xz yuzu-8feeb81af27ea8fed6888e26c1024be3b3231d48.tar.zst yuzu-8feeb81af27ea8fed6888e26c1024be3b3231d48.zip |
Diffstat (limited to '')
-rw-r--r-- | src/core/hle/kernel/server_session.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/core/hle/kernel/server_session.h b/src/core/hle/kernel/server_session.h index 5365605da..f4360ddf3 100644 --- a/src/core/hle/kernel/server_session.h +++ b/src/core/hle/kernel/server_session.h @@ -67,20 +67,30 @@ public: /** * Handle a sync request from the emulated application. + * @param thread Thread that initiated the request. * @returns ResultCode from the operation. */ - ResultCode HandleSyncRequest(); + ResultCode HandleSyncRequest(SharedPtr<Thread> thread); bool ShouldWait(Thread* thread) const override; void Acquire(Thread* thread) override; std::string name; ///< The name of this session (optional) - bool signaled; ///< Whether there's new data available to this ServerSession std::shared_ptr<Session> parent; ///< The parent session, which links to the client endpoint. std::shared_ptr<SessionRequestHandler> hle_handler; ///< This session's HLE request handler (optional) + /// List of threads that are pending a response after a sync request. This list is processed in + /// a LIFO manner, thus, the last request will be dispatched first. + /// TODO(Subv): Verify if this is indeed processed in LIFO using a hardware test. + std::vector<SharedPtr<Thread>> pending_requesting_threads; + + /// Thread whose request is currently being handled. A request is considered "handled" when a + /// response is sent via svcReplyAndReceive. + /// TODO(Subv): Find a better name for this. + SharedPtr<Thread> currently_handling; + private: ServerSession(); ~ServerSession() override; |