Enable JIT service LLE (#2959)
* Enable JIT service LLE * Force disable PPTC when using the JIT service PPTC does not support multiple guest processes * Fix build * Make SM service registration per emulation context rather than global * Address PR feedback
This commit is contained in:
parent
54deded929
commit
42a2a80b87
8 changed files with 229 additions and 31 deletions
49
Ryujinx.HLE/HOS/Services/Sm/SmRegistry.cs
Normal file
49
Ryujinx.HLE/HOS/Services/Sm/SmRegistry.cs
Normal file
|
@ -0,0 +1,49 @@
|
|||
using Ryujinx.HLE.HOS.Kernel.Ipc;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Threading;
|
||||
|
||||
namespace Ryujinx.HLE.HOS.Services.Sm
|
||||
{
|
||||
class SmRegistry
|
||||
{
|
||||
private readonly ConcurrentDictionary<string, KPort> _registeredServices;
|
||||
private readonly AutoResetEvent _serviceRegistrationEvent;
|
||||
|
||||
public SmRegistry()
|
||||
{
|
||||
_registeredServices = new ConcurrentDictionary<string, KPort>();
|
||||
_serviceRegistrationEvent = new AutoResetEvent(false);
|
||||
}
|
||||
|
||||
public bool TryGetService(string name, out KPort port)
|
||||
{
|
||||
return _registeredServices.TryGetValue(name, out port);
|
||||
}
|
||||
|
||||
public bool TryRegister(string name, KPort port)
|
||||
{
|
||||
if (_registeredServices.TryAdd(name, port))
|
||||
{
|
||||
_serviceRegistrationEvent.Set();
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool Unregister(string name)
|
||||
{
|
||||
return _registeredServices.TryRemove(name, out _);
|
||||
}
|
||||
|
||||
public bool IsServiceRegistered(string name)
|
||||
{
|
||||
return _registeredServices.TryGetValue(name, out _);
|
||||
}
|
||||
|
||||
public void WaitForServiceRegistration()
|
||||
{
|
||||
_serviceRegistrationEvent.WaitOne();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue