Procházet zdrojové kódy

Threads do not wait for the server endpoint to call AcceptSession before returning from a ConnectToPort or GetServiceHandle call.

Subv před 9 roky
rodič
revize
ed210c32b3
2 změnil soubory, kde provedl 5 přidání a 3 odebrání
  1. 2 1
      src/core/hle/service/srv.cpp
  2. 3 2
      src/core/hle/svc.cpp

+ 2 - 1
src/core/hle/service/srv.cpp

@@ -95,7 +95,8 @@ static void GetServiceHandle(Service::Interface* self) {
         auto client_session = std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions);
         auto client_session = std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions);
         auto server_session = std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions);
         auto server_session = std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions);
 
 
-        // TODO(Subv): Wait the current thread until the ServerPort calls AcceptSession.
+        // Note: Threads do not wait for the server endpoint to call
+        // AcceptSession before returning from this call.
 
 
         // Add the server session to the port's queue
         // Add the server session to the port's queue
         client_port->AddWaitingSession(server_session);
         client_port->AddWaitingSession(server_session);

+ 3 - 2
src/core/hle/svc.cpp

@@ -234,11 +234,12 @@ static ResultCode ConnectToPort(Handle* out_handle, const char* port_name) {
     auto client_session = std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions);
     auto client_session = std::get<Kernel::SharedPtr<Kernel::ClientSession>>(sessions);
     auto server_session = std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions);
     auto server_session = std::get<Kernel::SharedPtr<Kernel::ServerSession>>(sessions);
 
 
-    // TODO(Subv): Wait the current thread until the ServerPort calls AcceptSession.
-
     // Add the server session to the port's queue
     // Add the server session to the port's queue
     client_port->AddWaitingSession(server_session);
     client_port->AddWaitingSession(server_session);
 
 
+    // Note: Threads do not wait for the server endpoint to call
+    // AcceptSession before returning from this call.
+
     // Return the client session
     // Return the client session
     CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(client_session));
     CASCADE_RESULT(*out_handle, Kernel::g_handle_table.Create(client_session));
     return RESULT_SUCCESS;
     return RESULT_SUCCESS;