|
|
@ -164,18 +164,18 @@ ResultVal<Kernel::KClientSession*> SM::GetServiceImpl(Kernel::HLERequestContext& |
|
|
R_UNLESS(session_reservation.Succeeded(), Kernel::ResultLimitReached); |
|
|
R_UNLESS(session_reservation.Succeeded(), Kernel::ResultLimitReached); |
|
|
|
|
|
|
|
|
// Create a new session.
|
|
|
// Create a new session.
|
|
|
auto* session = Kernel::KSession::Create(kernel); |
|
|
|
|
|
session->Initialize(&port->GetClientPort(), std::move(name)); |
|
|
|
|
|
|
|
|
Kernel::KClientSession* session{}; |
|
|
|
|
|
port->GetClientPort().CreateSession(std::addressof(session)); |
|
|
|
|
|
|
|
|
// Commit the session reservation.
|
|
|
// Commit the session reservation.
|
|
|
session_reservation.Commit(); |
|
|
session_reservation.Commit(); |
|
|
|
|
|
|
|
|
// Enqueue the session with the named port.
|
|
|
// Enqueue the session with the named port.
|
|
|
port->EnqueueSession(&session->GetServerSession()); |
|
|
|
|
|
|
|
|
port->EnqueueSession(&session->GetParent()->GetServerSession()); |
|
|
|
|
|
|
|
|
LOG_DEBUG(Service_SM, "called service={} -> session={}", name, session->GetId()); |
|
|
LOG_DEBUG(Service_SM, "called service={} -> session={}", name, session->GetId()); |
|
|
|
|
|
|
|
|
return MakeResult(&session->GetClientSession()); |
|
|
|
|
|
|
|
|
return MakeResult(session); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void SM::RegisterService(Kernel::HLERequestContext& ctx) { |
|
|
void SM::RegisterService(Kernel::HLERequestContext& ctx) { |
|
|
|