3
0
Fork 0
forked from suyu/suyu

Merge pull request #11327 from liamwhite/skyline-2

sockets: avoid locking around socket session calls
This commit is contained in:
liamwhite 2023-08-24 10:33:53 -04:00 committed by GitHub
commit 7d89f2c146
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 2 deletions

View file

@ -79,8 +79,8 @@ protected:
using HandlerFnP = void (Self::*)(HLERequestContext&); using HandlerFnP = void (Self::*)(HLERequestContext&);
/// Used to gain exclusive access to the service members, e.g. from CoreTiming thread. /// Used to gain exclusive access to the service members, e.g. from CoreTiming thread.
[[nodiscard]] std::scoped_lock<std::mutex> LockService() { [[nodiscard]] virtual std::unique_lock<std::mutex> LockService() {
return std::scoped_lock{lock_service}; return std::unique_lock{lock_service};
} }
/// System context that the service operates under. /// System context that the service operates under.

View file

@ -1029,6 +1029,11 @@ BSD::~BSD() {
} }
} }
std::unique_lock<std::mutex> BSD::LockService() {
// Do not lock socket IClient instances.
return {};
}
BSDCFG::BSDCFG(Core::System& system_) : ServiceFramework{system_, "bsdcfg"} { BSDCFG::BSDCFG(Core::System& system_) : ServiceFramework{system_, "bsdcfg"} {
// clang-format off // clang-format off
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {

View file

@ -186,6 +186,9 @@ private:
// Callback identifier for the OnProxyPacketReceived event. // Callback identifier for the OnProxyPacketReceived event.
Network::RoomMember::CallbackHandle<Network::ProxyPacket> proxy_packet_received; Network::RoomMember::CallbackHandle<Network::ProxyPacket> proxy_packet_received;
protected:
virtual std::unique_lock<std::mutex> LockService() override;
}; };
class BSDCFG final : public ServiceFramework<BSDCFG> { class BSDCFG final : public ServiceFramework<BSDCFG> {