summaryrefslogtreecommitdiff
path: root/src/core/hle/kernel
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/kernel')
-rw-r--r--src/core/hle/kernel/client_session.cpp4
-rw-r--r--src/core/hle/kernel/client_session.h6
-rw-r--r--src/core/hle/kernel/server_session.cpp3
-rw-r--r--src/core/hle/kernel/server_session.h9
-rw-r--r--src/core/hle/kernel/svc.cpp2
5 files changed, 18 insertions, 6 deletions
diff --git a/src/core/hle/kernel/client_session.cpp b/src/core/hle/kernel/client_session.cpp
index 5995a6556..9849dbe91 100644
--- a/src/core/hle/kernel/client_session.cpp
+++ b/src/core/hle/kernel/client_session.cpp
@@ -21,10 +21,10 @@ ClientSession::~ClientSession() {
21 } 21 }
22} 22}
23 23
24ResultCode ClientSession::SendSyncRequest(Thread* thread) { 24ResultCode ClientSession::SendSyncRequest(Thread* thread, Memory::Memory& memory) {
25 // Signal the server session that new data is available 25 // Signal the server session that new data is available
26 if (auto server = parent->server.lock()) { 26 if (auto server = parent->server.lock()) {
27 return server->HandleSyncRequest(SharedFrom(thread)); 27 return server->HandleSyncRequest(SharedFrom(thread), memory);
28 } 28 }
29 29
30 return ERR_SESSION_CLOSED_BY_REMOTE; 30 return ERR_SESSION_CLOSED_BY_REMOTE;
diff --git a/src/core/hle/kernel/client_session.h b/src/core/hle/kernel/client_session.h
index 5ae41db29..484dd7bc9 100644
--- a/src/core/hle/kernel/client_session.h
+++ b/src/core/hle/kernel/client_session.h
@@ -10,6 +10,10 @@
10 10
11union ResultCode; 11union ResultCode;
12 12
13namespace Memory {
14class Memory;
15}
16
13namespace Kernel { 17namespace Kernel {
14 18
15class KernelCore; 19class KernelCore;
@@ -37,7 +41,7 @@ public:
37 return HANDLE_TYPE; 41 return HANDLE_TYPE;
38 } 42 }
39 43
40 ResultCode SendSyncRequest(Thread* thread); 44 ResultCode SendSyncRequest(Thread* thread, Memory::Memory& memory);
41 45
42private: 46private:
43 /// The parent session, which links to the server endpoint. 47 /// The parent session, which links to the server endpoint.
diff --git a/src/core/hle/kernel/server_session.cpp b/src/core/hle/kernel/server_session.cpp
index c7db21eb2..57878514d 100644
--- a/src/core/hle/kernel/server_session.cpp
+++ b/src/core/hle/kernel/server_session.cpp
@@ -127,7 +127,8 @@ ResultCode ServerSession::HandleDomainSyncRequest(Kernel::HLERequestContext& con
127 return RESULT_SUCCESS; 127 return RESULT_SUCCESS;
128} 128}
129 129
130ResultCode ServerSession::HandleSyncRequest(std::shared_ptr<Thread> thread) { 130ResultCode ServerSession::HandleSyncRequest(std::shared_ptr<Thread> thread,
131 Memory::Memory& memory) {
131 // The ServerSession received a sync request, this means that there's new data available 132 // The ServerSession received a sync request, this means that there's new data available
132 // from its ClientSession, so wake up any threads that may be waiting on a svcReplyAndReceive or 133 // from its ClientSession, so wake up any threads that may be waiting on a svcReplyAndReceive or
133 // similar. 134 // similar.
diff --git a/src/core/hle/kernel/server_session.h b/src/core/hle/kernel/server_session.h
index 8a65647b6..641709a45 100644
--- a/src/core/hle/kernel/server_session.h
+++ b/src/core/hle/kernel/server_session.h
@@ -13,6 +13,10 @@
13#include "core/hle/kernel/wait_object.h" 13#include "core/hle/kernel/wait_object.h"
14#include "core/hle/result.h" 14#include "core/hle/result.h"
15 15
16namespace Memory {
17class Memory;
18}
19
16namespace Kernel { 20namespace Kernel {
17 21
18class ClientPort; 22class ClientPort;
@@ -85,10 +89,13 @@ public:
85 89
86 /** 90 /**
87 * Handle a sync request from the emulated application. 91 * Handle a sync request from the emulated application.
92 *
88 * @param thread Thread that initiated the request. 93 * @param thread Thread that initiated the request.
94 * @param memory Memory context to handle the sync request under.
95 *
89 * @returns ResultCode from the operation. 96 * @returns ResultCode from the operation.
90 */ 97 */
91 ResultCode HandleSyncRequest(std::shared_ptr<Thread> thread); 98 ResultCode HandleSyncRequest(std::shared_ptr<Thread> thread, Memory::Memory& memory);
92 99
93 bool ShouldWait(const Thread* thread) const override; 100 bool ShouldWait(const Thread* thread) const override;
94 101
diff --git a/src/core/hle/kernel/svc.cpp b/src/core/hle/kernel/svc.cpp
index eddafaf60..68bff11ec 100644
--- a/src/core/hle/kernel/svc.cpp
+++ b/src/core/hle/kernel/svc.cpp
@@ -383,7 +383,7 @@ static ResultCode SendSyncRequest(Core::System& system, Handle handle) {
383 383
384 // TODO(Subv): svcSendSyncRequest should put the caller thread to sleep while the server 384 // TODO(Subv): svcSendSyncRequest should put the caller thread to sleep while the server
385 // responds and cause a reschedule. 385 // responds and cause a reschedule.
386 return session->SendSyncRequest(system.CurrentScheduler().GetCurrentThread()); 386 return session->SendSyncRequest(system.CurrentScheduler().GetCurrentThread(), system.Memory());
387} 387}
388 388
389/// Get the ID for the specified thread. 389/// Get the ID for the specified thread.