Browse Source
Merge pull request #11327 from liamwhite/skyline-2
sockets: avoid locking around socket session calls
pull/15/merge
liamwhite
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with
10 additions and
2 deletions
-
src/core/hle/service/service.h
-
src/core/hle/service/sockets/bsd.cpp
-
src/core/hle/service/sockets/bsd.h
|
|
|
@ -79,8 +79,8 @@ protected: |
|
|
|
using HandlerFnP = void (Self::*)(HLERequestContext&); |
|
|
|
|
|
|
|
/// Used to gain exclusive access to the service members, e.g. from CoreTiming thread. |
|
|
|
[[nodiscard]] std::scoped_lock<std::mutex> LockService() { |
|
|
|
return std::scoped_lock{lock_service}; |
|
|
|
[[nodiscard]] virtual std::unique_lock<std::mutex> LockService() { |
|
|
|
return std::unique_lock{lock_service}; |
|
|
|
} |
|
|
|
|
|
|
|
/// System context that the service operates under. |
|
|
|
|
|
|
|
@ -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"} { |
|
|
|
// clang-format off
|
|
|
|
static const FunctionInfo functions[] = { |
|
|
|
|
|
|
|
@ -186,6 +186,9 @@ private: |
|
|
|
|
|
|
|
// Callback identifier for the OnProxyPacketReceived event. |
|
|
|
Network::RoomMember::CallbackHandle<Network::ProxyPacket> proxy_packet_received; |
|
|
|
|
|
|
|
protected: |
|
|
|
virtual std::unique_lock<std::mutex> LockService() override; |
|
|
|
}; |
|
|
|
|
|
|
|
class BSDCFG final : public ServiceFramework<BSDCFG> { |
|
|
|
|