Move kernel state out of the Horizon class (#1107)

* Move kernel state from Horizon to KernelContext

* Merge syscalls partial classes, split 32 and 64-bit variants

* Sort usings
This commit is contained in:
gdkchan 2020-05-04 00:41:29 -03:00 committed by GitHub
parent cd48576f58
commit 15d1cc806b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
68 changed files with 3678 additions and 3570 deletions

View file

@ -20,9 +20,9 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.Lib
public ILibraryAppletAccessor(AppletId appletId, Horizon system)
{
_stateChangedEvent = new KEvent(system);
_normalOutDataEvent = new KEvent(system);
_interactiveOutDataEvent = new KEvent(system);
_stateChangedEvent = new KEvent(system.KernelContext);
_normalOutDataEvent = new KEvent(system.KernelContext);
_interactiveOutDataEvent = new KEvent(system.KernelContext);
_applet = AppletManager.Create(appletId, system);

View file

@ -13,7 +13,7 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.Sys
public IHomeMenuFunctions(Horizon system)
{
// TODO: Signal this Event somewhere in future.
_channelEvent = new KEvent(system);
_channelEvent = new KEvent(system.KernelContext);
}
[Command(10)]

View file

@ -23,7 +23,7 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.Sys
public ISelfController(Horizon system)
{
_libraryAppletLaunchableEvent = new KEvent(system);
_libraryAppletLaunchableEvent = new KEvent(system.KernelContext);
}
[Command(0)]
@ -230,7 +230,7 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.Sys
{
if (_accumulatedSuspendedTickChangedEventHandle == 0)
{
_accumulatedSuspendedTickChangedEvent = new KEvent(context.Device.System);
_accumulatedSuspendedTickChangedEvent = new KEvent(context.Device.System.KernelContext);
_accumulatedSuspendedTickChangedEvent.ReadableEvent.Signal();

View file

@ -25,7 +25,7 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService.Applicati
public IApplicationFunctions(Horizon system)
{
_gpuErrorDetectedSystemEvent = new KEvent(system);
_gpuErrorDetectedSystemEvent = new KEvent(system.KernelContext);
}
[Command(1)]

View file

@ -14,7 +14,7 @@ namespace Ryujinx.HLE.HOS.Services.Audio.AudioRendererManager
public IAudioDevice(Horizon system)
{
_systemEvent = new KEvent(system);
_systemEvent = new KEvent(system.KernelContext);
// TODO: We shouldn't be signaling this here.
_systemEvent.ReadableEvent.Signal();

View file

@ -48,7 +48,7 @@ namespace Ryujinx.HLE.HOS.Services.Audio.AudioRendererManager
IAalOutput audioOut,
AudioRendererParameter rendererParams)
{
_updateEvent = new KEvent(system);
_updateEvent = new KEvent(system.KernelContext);
_memory = memory;
_audioOut = audioOut;

View file

@ -138,7 +138,7 @@ namespace Ryujinx.HLE.HOS.Services.Audio
channels = DefaultChannelsCount;
}
KEvent releaseEvent = new KEvent(context.Device.System);
KEvent releaseEvent = new KEvent(context.Device.System.KernelContext);
ReleaseCallback callback = () =>
{

View file

@ -15,7 +15,7 @@ namespace Ryujinx.HLE.HOS.Services.Bcat.ServiceCreator
public IDeliveryCacheProgressService(ServiceCtx context)
{
_event = new KEvent(context.Device.System);
_event = new KEvent(context.Device.System.KernelContext);
}
[Command(0)]

View file

@ -25,7 +25,7 @@ namespace Ryujinx.HLE.HOS.Services.Bluetooth
{
if (BluetoothEventManager.InitializeBleDebugEventHandle == 0)
{
BluetoothEventManager.InitializeBleDebugEvent = new KEvent(context.Device.System);
BluetoothEventManager.InitializeBleDebugEvent = new KEvent(context.Device.System.KernelContext);
if (context.Process.HandleTable.GenerateHandle(BluetoothEventManager.InitializeBleDebugEvent.ReadableEvent, out BluetoothEventManager.InitializeBleDebugEventHandle) != KernelResult.Success)
{
@ -35,7 +35,7 @@ namespace Ryujinx.HLE.HOS.Services.Bluetooth
if (BluetoothEventManager.UnknownBleDebugEventHandle == 0)
{
BluetoothEventManager.UnknownBleDebugEvent = new KEvent(context.Device.System);
BluetoothEventManager.UnknownBleDebugEvent = new KEvent(context.Device.System.KernelContext);
if (context.Process.HandleTable.GenerateHandle(BluetoothEventManager.UnknownBleDebugEvent.ReadableEvent, out BluetoothEventManager.UnknownBleDebugEventHandle) != KernelResult.Success)
{
@ -45,7 +45,7 @@ namespace Ryujinx.HLE.HOS.Services.Bluetooth
if (BluetoothEventManager.RegisterBleDebugEventHandle == 0)
{
BluetoothEventManager.RegisterBleDebugEvent = new KEvent(context.Device.System);
BluetoothEventManager.RegisterBleDebugEvent = new KEvent(context.Device.System.KernelContext);
if (context.Process.HandleTable.GenerateHandle(BluetoothEventManager.RegisterBleDebugEvent.ReadableEvent, out BluetoothEventManager.RegisterBleDebugEventHandle) != KernelResult.Success)
{
@ -59,7 +59,7 @@ namespace Ryujinx.HLE.HOS.Services.Bluetooth
if (BluetoothEventManager.InitializeBleEventHandle == 0)
{
BluetoothEventManager.InitializeBleEvent = new KEvent(context.Device.System);
BluetoothEventManager.InitializeBleEvent = new KEvent(context.Device.System.KernelContext);
if (context.Process.HandleTable.GenerateHandle(BluetoothEventManager.InitializeBleEvent.ReadableEvent, out BluetoothEventManager.InitializeBleEventHandle) != KernelResult.Success)
{
@ -69,7 +69,7 @@ namespace Ryujinx.HLE.HOS.Services.Bluetooth
if (BluetoothEventManager.UnknownBleEventHandle == 0)
{
BluetoothEventManager.UnknownBleEvent = new KEvent(context.Device.System);
BluetoothEventManager.UnknownBleEvent = new KEvent(context.Device.System.KernelContext);
if (context.Process.HandleTable.GenerateHandle(BluetoothEventManager.UnknownBleEvent.ReadableEvent, out BluetoothEventManager.UnknownBleEventHandle) != KernelResult.Success)
{
@ -79,7 +79,7 @@ namespace Ryujinx.HLE.HOS.Services.Bluetooth
if (BluetoothEventManager.RegisterBleEventHandle == 0)
{
BluetoothEventManager.RegisterBleEvent = new KEvent(context.Device.System);
BluetoothEventManager.RegisterBleEvent = new KEvent(context.Device.System.KernelContext);
if (context.Process.HandleTable.GenerateHandle(BluetoothEventManager.RegisterBleEvent.ReadableEvent, out BluetoothEventManager.RegisterBleEventHandle) != KernelResult.Success)
{

View file

@ -29,7 +29,7 @@ namespace Ryujinx.HLE.HOS.Services.BluetoothManager.BtmUser
if (_bleScanEventHandle == 0)
{
_bleScanEvent = new KEvent(context.Device.System);
_bleScanEvent = new KEvent(context.Device.System.KernelContext);
result = context.Process.HandleTable.GenerateHandle(_bleScanEvent.ReadableEvent, out _bleScanEventHandle);
@ -55,7 +55,7 @@ namespace Ryujinx.HLE.HOS.Services.BluetoothManager.BtmUser
if (_bleConnectionEventHandle == 0)
{
_bleConnectionEvent = new KEvent(context.Device.System);
_bleConnectionEvent = new KEvent(context.Device.System.KernelContext);
result = context.Process.HandleTable.GenerateHandle(_bleConnectionEvent.ReadableEvent, out _bleConnectionEventHandle);
@ -81,7 +81,7 @@ namespace Ryujinx.HLE.HOS.Services.BluetoothManager.BtmUser
if (_bleServiceDiscoveryEventHandle == 0)
{
_bleServiceDiscoveryEvent = new KEvent(context.Device.System);
_bleServiceDiscoveryEvent = new KEvent(context.Device.System.KernelContext);
result = context.Process.HandleTable.GenerateHandle(_bleServiceDiscoveryEvent.ReadableEvent, out _bleServiceDiscoveryEventHandle);
@ -107,7 +107,7 @@ namespace Ryujinx.HLE.HOS.Services.BluetoothManager.BtmUser
if (_bleMtuConfigEventHandle == 0)
{
_bleMtuConfigEvent = new KEvent(context.Device.System);
_bleMtuConfigEvent = new KEvent(context.Device.System.KernelContext);
result = context.Process.HandleTable.GenerateHandle(_bleMtuConfigEvent.ReadableEvent, out _bleMtuConfigEventHandle);

View file

@ -29,7 +29,7 @@ namespace Ryujinx.HLE.HOS.Services.Friend.ServiceCreator
_userId = userId;
_permissionLevel = permissionLevel;
_notifications = new LinkedList<NotificationInfo>();
_notificationEvent = new KEvent(context.Device.System);
_notificationEvent = new KEvent(context.Device.System.KernelContext);
_hasNewFriendRequest = false;
_hasFriendListUpdate = false;

View file

@ -58,7 +58,7 @@ namespace Ryujinx.HLE.HOS.Services.Hid
for (int i = 0; i < _styleSetUpdateEvents.Length; ++i)
{
_styleSetUpdateEvents[i] = new KEvent(_device.System);
_styleSetUpdateEvents[i] = new KEvent(_device.System.KernelContext);
}
_fullBattery[0] = _fullBattery[1] = _fullBattery[2] = BatteryCharge.Percent100;

View file

@ -37,8 +37,8 @@ namespace Ryujinx.HLE.HOS.Services.Hid
public IHidServer(ServiceCtx context)
{
_xpadIdEvent = new KEvent(context.Device.System);
_palmaOperationCompleteEvent = new KEvent(context.Device.System);
_xpadIdEvent = new KEvent(context.Device.System.KernelContext);
_palmaOperationCompleteEvent = new KEvent(context.Device.System.KernelContext);
_npadJoyAssignmentMode = HidNpadJoyAssignmentMode.Dual;
_npadHandheldActivationMode = HidNpadHandheldActivationMode.Dual;

View file

@ -168,7 +168,7 @@ namespace Ryujinx.HLE.HOS.Services
}
else
{
KSession session = new KSession(context.Device.System);
KSession session = new KSession(context.Device.System.KernelContext);
session.ClientSession.Service = obj;

View file

@ -16,7 +16,7 @@ namespace Ryujinx.HLE.HOS.Services.Ldn
{
// TODO(Ac_K): Determine where the internal state is set.
NifmState = ResultCode.Success;
StateChangeEvent = new KEvent(system);
StateChangeEvent = new KEvent(system.KernelContext);
_state = NetworkState.None;
}

View file

@ -209,7 +209,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
{
if (_devices[i].ActivateEventHandle == 0)
{
_devices[i].ActivateEvent = new KEvent(context.Device.System);
_devices[i].ActivateEvent = new KEvent(context.Device.System.KernelContext);
if (context.Process.HandleTable.GenerateHandle(_devices[i].ActivateEvent.ReadableEvent, out _devices[i].ActivateEventHandle) != KernelResult.Success)
{
@ -238,7 +238,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
{
if (_devices[i].DeactivateEventHandle == 0)
{
_devices[i].DeactivateEvent = new KEvent(context.Device.System);
_devices[i].DeactivateEvent = new KEvent(context.Device.System.KernelContext);
if (context.Process.HandleTable.GenerateHandle(_devices[i].DeactivateEvent.ReadableEvent, out _devices[i].DeactivateEventHandle) != KernelResult.Success)
{
@ -317,7 +317,7 @@ namespace Ryujinx.HLE.HOS.Services.Nfc.Nfp
{
if (_availabilityChangeEventHandle == 0)
{
_availabilityChangeEvent = new KEvent(context.Device.System);
_availabilityChangeEvent = new KEvent(context.Device.System.KernelContext);
if (context.Process.HandleTable.GenerateHandle(_availabilityChangeEvent.ReadableEvent, out _availabilityChangeEventHandle) != KernelResult.Success)
{

View file

@ -15,8 +15,8 @@ namespace Ryujinx.HLE.HOS.Services.Nifm.StaticService
public IRequest(Horizon system, uint version)
{
_event0 = new KEvent(system);
_event1 = new KEvent(system);
_event0 = new KEvent(system.KernelContext);
_event1 = new KEvent(system.KernelContext);
_version = version;
}

View file

@ -13,9 +13,9 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel
public NvHostGpuDeviceFile(ServiceCtx context) : base(context)
{
_smExceptionBptIntReportEvent = new KEvent(context.Device.System);
_smExceptionBptPauseReportEvent = new KEvent(context.Device.System);
_errorNotifierEvent = new KEvent(context.Device.System);
_smExceptionBptIntReportEvent = new KEvent(context.Device.System.KernelContext);
_smExceptionBptPauseReportEvent = new KEvent(context.Device.System.KernelContext);
_errorNotifierEvent = new KEvent(context.Device.System.KernelContext);
}
public override NvInternalResult Ioctl2(NvIoctl command, Span<byte> arguments, Span<byte> inlineInBuffer)

View file

@ -35,7 +35,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrl
State = NvHostEventState.Available;
Event = new KEvent(system);
Event = new KEvent(system.KernelContext);
_eventId = eventId;

View file

@ -17,8 +17,8 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrlGpu
public NvHostCtrlGpuDeviceFile(ServiceCtx context) : base(context)
{
_errorEvent = new KEvent(context.Device.System);
_unknownEvent = new KEvent(context.Device.System);
_errorEvent = new KEvent(context.Device.System.KernelContext);
_unknownEvent = new KEvent(context.Device.System.KernelContext);
}
static NvHostCtrlGpuDeviceFile()

View file

@ -12,7 +12,7 @@ namespace Ryujinx.HLE.HOS.Services.Ptm.Psm
public IPsmSession(Horizon system)
{
_stateChangeEvent = new KEvent(system);
_stateChangeEvent = new KEvent(system.KernelContext);
_stateChangeEventHandle = -1;
}

View file

@ -32,7 +32,7 @@ namespace Ryujinx.HLE.HOS.Services.Sm
public static void InitializePort(Horizon system)
{
KPort port = new KPort(system, 256, false, 0);
KPort port = new KPort(system.KernelContext, 256, false, 0);
port.ClientPort.SetName("sm:");
@ -64,7 +64,7 @@ namespace Ryujinx.HLE.HOS.Services.Sm
return ResultCode.InvalidName;
}
KSession session = new KSession(context.Device.System);
KSession session = new KSession(context.Device.System.KernelContext);
if (_registeredServices.TryGetValue(name, out KPort port))
{
@ -135,7 +135,7 @@ namespace Ryujinx.HLE.HOS.Services.Sm
Logger.PrintInfo(LogClass.ServiceSm, $"Register \"{name}\".");
KPort port = new KPort(context.Device.System, maxSessions, isLight, 0);
KPort port = new KPort(context.Device.System.KernelContext, maxSessions, isLight, 0);
if (!_registeredServices.TryAdd(name, port))
{

View file

@ -60,8 +60,8 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
// TODO: CreateGraphicBufferAlloc?
_waitBufferFreeEvent = new KEvent(device.System);
_frameAvailableEvent = new KEvent(device.System);
_waitBufferFreeEvent = new KEvent(device.System.KernelContext);
_frameAvailableEvent = new KEvent(device.System.KernelContext);
Owner = process;
}

View file

@ -64,7 +64,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.Clock
internal void CreateAutomaticCorrectionEvent(Horizon system)
{
_autoCorrectionEvent = new KEvent(system);
_autoCorrectionEvent = new KEvent(system.KernelContext);
}
public ResultCode SetAutomaticCorrectionEnabled(KThread thread, bool autoCorrectionEnabled)

View file

@ -106,7 +106,7 @@ namespace Ryujinx.HLE.HOS.Services.Time.StaticService
{
if (_operationEventReadableHandle == 0)
{
KEvent kEvent = new KEvent(context.Device.System);
KEvent kEvent = new KEvent(context.Device.System.KernelContext);
_clockCore.RegisterOperationEvent(kEvent.WritableEvent);