forked from Mirror/Ryujinx
misc: Make PID unsigned long instead of long (#3043)
This commit is contained in:
parent
86b37d0ff7
commit
6dffe0fad4
43 changed files with 99 additions and 100 deletions
|
@ -77,7 +77,7 @@ namespace Ryujinx.Graphics.Gpu
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Registry with physical memories that can be used with this GPU context, keyed by owner process ID.
|
/// Registry with physical memories that can be used with this GPU context, keyed by owner process ID.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal ConcurrentDictionary<long, PhysicalMemory> PhysicalMemoryRegistry { get; }
|
internal ConcurrentDictionary<ulong, PhysicalMemory> PhysicalMemoryRegistry { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Host hardware capabilities.
|
/// Host hardware capabilities.
|
||||||
|
@ -126,7 +126,7 @@ namespace Ryujinx.Graphics.Gpu
|
||||||
|
|
||||||
DeferredActions = new Queue<Action>();
|
DeferredActions = new Queue<Action>();
|
||||||
|
|
||||||
PhysicalMemoryRegistry = new ConcurrentDictionary<long, PhysicalMemory>();
|
PhysicalMemoryRegistry = new ConcurrentDictionary<ulong, PhysicalMemory>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -144,7 +144,7 @@ namespace Ryujinx.Graphics.Gpu
|
||||||
/// <param name="pid">ID of the process that owns the memory manager</param>
|
/// <param name="pid">ID of the process that owns the memory manager</param>
|
||||||
/// <returns>The memory manager</returns>
|
/// <returns>The memory manager</returns>
|
||||||
/// <exception cref="ArgumentException">Thrown when <paramref name="pid"/> is invalid</exception>
|
/// <exception cref="ArgumentException">Thrown when <paramref name="pid"/> is invalid</exception>
|
||||||
public MemoryManager CreateMemoryManager(long pid)
|
public MemoryManager CreateMemoryManager(ulong pid)
|
||||||
{
|
{
|
||||||
if (!PhysicalMemoryRegistry.TryGetValue(pid, out var physicalMemory))
|
if (!PhysicalMemoryRegistry.TryGetValue(pid, out var physicalMemory))
|
||||||
{
|
{
|
||||||
|
@ -160,7 +160,7 @@ namespace Ryujinx.Graphics.Gpu
|
||||||
/// <param name="pid">ID of the process that owns <paramref name="cpuMemory"/></param>
|
/// <param name="pid">ID of the process that owns <paramref name="cpuMemory"/></param>
|
||||||
/// <param name="cpuMemory">Virtual memory owned by the process</param>
|
/// <param name="cpuMemory">Virtual memory owned by the process</param>
|
||||||
/// <exception cref="ArgumentException">Thrown if <paramref name="pid"/> was already registered</exception>
|
/// <exception cref="ArgumentException">Thrown if <paramref name="pid"/> was already registered</exception>
|
||||||
public void RegisterProcess(long pid, Cpu.IVirtualMemoryManagerTracked cpuMemory)
|
public void RegisterProcess(ulong pid, Cpu.IVirtualMemoryManagerTracked cpuMemory)
|
||||||
{
|
{
|
||||||
var physicalMemory = new PhysicalMemory(this, cpuMemory);
|
var physicalMemory = new PhysicalMemory(this, cpuMemory);
|
||||||
if (!PhysicalMemoryRegistry.TryAdd(pid, physicalMemory))
|
if (!PhysicalMemoryRegistry.TryAdd(pid, physicalMemory))
|
||||||
|
@ -175,7 +175,7 @@ namespace Ryujinx.Graphics.Gpu
|
||||||
/// Unregisters a process, indicating that its memory will no longer be used, and that caches can be freed.
|
/// Unregisters a process, indicating that its memory will no longer be used, and that caches can be freed.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="pid">ID of the process</param>
|
/// <param name="pid">ID of the process</param>
|
||||||
public void UnregisterProcess(long pid)
|
public void UnregisterProcess(ulong pid)
|
||||||
{
|
{
|
||||||
if (PhysicalMemoryRegistry.TryRemove(pid, out var physicalMemory))
|
if (PhysicalMemoryRegistry.TryRemove(pid, out var physicalMemory))
|
||||||
{
|
{
|
||||||
|
|
|
@ -122,7 +122,7 @@ namespace Ryujinx.Graphics.Gpu
|
||||||
/// <param name="userObj">User defined object passed to the release callback</param>
|
/// <param name="userObj">User defined object passed to the release callback</param>
|
||||||
/// <exception cref="ArgumentException">Thrown when <paramref name="pid"/> is invalid</exception>
|
/// <exception cref="ArgumentException">Thrown when <paramref name="pid"/> is invalid</exception>
|
||||||
public void EnqueueFrameThreadSafe(
|
public void EnqueueFrameThreadSafe(
|
||||||
long pid,
|
ulong pid,
|
||||||
ulong address,
|
ulong address,
|
||||||
int width,
|
int width,
|
||||||
int height,
|
int height,
|
||||||
|
|
|
@ -9,14 +9,14 @@ namespace Ryujinx.HLE.HOS
|
||||||
{
|
{
|
||||||
class ArmProcessContext<T> : IProcessContext where T : class, IVirtualMemoryManagerTracked, IMemoryManager
|
class ArmProcessContext<T> : IProcessContext where T : class, IVirtualMemoryManagerTracked, IMemoryManager
|
||||||
{
|
{
|
||||||
private readonly long _pid;
|
private readonly ulong _pid;
|
||||||
private readonly GpuContext _gpuContext;
|
private readonly GpuContext _gpuContext;
|
||||||
private readonly CpuContext _cpuContext;
|
private readonly CpuContext _cpuContext;
|
||||||
private T _memoryManager;
|
private T _memoryManager;
|
||||||
|
|
||||||
public IVirtualMemoryManager AddressSpace => _memoryManager;
|
public IVirtualMemoryManager AddressSpace => _memoryManager;
|
||||||
|
|
||||||
public ArmProcessContext(long pid, GpuContext gpuContext, T memoryManager, bool for64Bit)
|
public ArmProcessContext(ulong pid, GpuContext gpuContext, T memoryManager, bool for64Bit)
|
||||||
{
|
{
|
||||||
if (memoryManager is IRefCounted rc)
|
if (memoryManager is IRefCounted rc)
|
||||||
{
|
{
|
||||||
|
|
|
@ -17,7 +17,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
_gpu = gpu;
|
_gpu = gpu;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IProcessContext Create(KernelContext context, long pid, ulong addressSpaceSize, InvalidAccessHandler invalidAccessHandler, bool for64Bit)
|
public IProcessContext Create(KernelContext context, ulong pid, ulong addressSpaceSize, InvalidAccessHandler invalidAccessHandler, bool for64Bit)
|
||||||
{
|
{
|
||||||
MemoryManagerMode mode = context.Device.Configuration.MemoryManagerMode;
|
MemoryManagerMode mode = context.Device.Configuration.MemoryManagerMode;
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ namespace Ryujinx.HLE.HOS.Ipc
|
||||||
{
|
{
|
||||||
public bool HasPId { get; private set; }
|
public bool HasPId { get; private set; }
|
||||||
|
|
||||||
public long PId { get; private set; }
|
public ulong PId { get; private set; }
|
||||||
|
|
||||||
public int[] ToCopy { get; private set; }
|
public int[] ToCopy { get; private set; }
|
||||||
public int[] ToMove { get; private set; }
|
public int[] ToMove { get; private set; }
|
||||||
|
@ -21,7 +21,7 @@ namespace Ryujinx.HLE.HOS.Ipc
|
||||||
ToCopy = new int[(word >> 1) & 0xf];
|
ToCopy = new int[(word >> 1) & 0xf];
|
||||||
ToMove = new int[(word >> 5) & 0xf];
|
ToMove = new int[(word >> 5) & 0xf];
|
||||||
|
|
||||||
PId = HasPId ? reader.ReadInt64() : 0;
|
PId = HasPId ? reader.ReadUInt64() : 0;
|
||||||
|
|
||||||
for (int index = 0; index < ToCopy.Length; index++)
|
for (int index = 0; index < ToCopy.Length; index++)
|
||||||
{
|
{
|
||||||
|
@ -40,7 +40,7 @@ namespace Ryujinx.HLE.HOS.Ipc
|
||||||
ToMove = move ?? throw new ArgumentNullException(nameof(move));
|
ToMove = move ?? throw new ArgumentNullException(nameof(move));
|
||||||
}
|
}
|
||||||
|
|
||||||
public IpcHandleDesc(int[] copy, int[] move, long pId) : this(copy, move)
|
public IpcHandleDesc(int[] copy, int[] move, ulong pId) : this(copy, move)
|
||||||
{
|
{
|
||||||
PId = pId;
|
PId = pId;
|
||||||
|
|
||||||
|
|
|
@ -42,14 +42,14 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
public KSynchronization Synchronization { get; }
|
public KSynchronization Synchronization { get; }
|
||||||
public KContextIdManager ContextIdManager { get; }
|
public KContextIdManager ContextIdManager { get; }
|
||||||
|
|
||||||
public ConcurrentDictionary<long, KProcess> Processes { get; }
|
public ConcurrentDictionary<ulong, KProcess> Processes { get; }
|
||||||
public ConcurrentDictionary<string, KAutoObject> AutoObjectNames { get; }
|
public ConcurrentDictionary<string, KAutoObject> AutoObjectNames { get; }
|
||||||
|
|
||||||
public bool ThreadReselectionRequested { get; set; }
|
public bool ThreadReselectionRequested { get; set; }
|
||||||
|
|
||||||
private long _kipId;
|
private ulong _kipId;
|
||||||
private long _processId;
|
private ulong _processId;
|
||||||
private long _threadUid;
|
private ulong _threadUid;
|
||||||
|
|
||||||
public KernelContext(
|
public KernelContext(
|
||||||
Switch device,
|
Switch device,
|
||||||
|
@ -98,7 +98,7 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
|
|
||||||
KernelInitialized = true;
|
KernelInitialized = true;
|
||||||
|
|
||||||
Processes = new ConcurrentDictionary<long, KProcess>();
|
Processes = new ConcurrentDictionary<ulong, KProcess>();
|
||||||
AutoObjectNames = new ConcurrentDictionary<string, KAutoObject>();
|
AutoObjectNames = new ConcurrentDictionary<string, KAutoObject>();
|
||||||
|
|
||||||
_kipId = KernelConstants.InitialKipId;
|
_kipId = KernelConstants.InitialKipId;
|
||||||
|
@ -115,17 +115,17 @@ namespace Ryujinx.HLE.HOS.Kernel
|
||||||
new Thread(PreemptionThreadStart) { Name = "HLE.PreemptionThread" }.Start();
|
new Thread(PreemptionThreadStart) { Name = "HLE.PreemptionThread" }.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
public long NewThreadUid()
|
public ulong NewThreadUid()
|
||||||
{
|
{
|
||||||
return Interlocked.Increment(ref _threadUid) - 1;
|
return Interlocked.Increment(ref _threadUid) - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long NewKipId()
|
public ulong NewKipId()
|
||||||
{
|
{
|
||||||
return Interlocked.Increment(ref _kipId) - 1;
|
return Interlocked.Increment(ref _kipId) - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long NewProcessId()
|
public ulong NewProcessId()
|
||||||
{
|
{
|
||||||
return Interlocked.Increment(ref _processId) - 1;
|
return Interlocked.Increment(ref _processId) - 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
|
||||||
{
|
{
|
||||||
private readonly SharedMemoryStorage _storage;
|
private readonly SharedMemoryStorage _storage;
|
||||||
|
|
||||||
private readonly long _ownerPid;
|
private readonly ulong _ownerPid;
|
||||||
|
|
||||||
private readonly KMemoryPermission _ownerPermission;
|
private readonly KMemoryPermission _ownerPermission;
|
||||||
private readonly KMemoryPermission _userPermission;
|
private readonly KMemoryPermission _userPermission;
|
||||||
|
@ -16,7 +16,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
|
||||||
public KSharedMemory(
|
public KSharedMemory(
|
||||||
KernelContext context,
|
KernelContext context,
|
||||||
SharedMemoryStorage storage,
|
SharedMemoryStorage storage,
|
||||||
long ownerPid,
|
ulong ownerPid,
|
||||||
KMemoryPermission ownerPermission,
|
KMemoryPermission ownerPermission,
|
||||||
KMemoryPermission userPermission) : base(context)
|
KMemoryPermission userPermission) : base(context)
|
||||||
{
|
{
|
||||||
|
|
|
@ -4,6 +4,6 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
|
||||||
{
|
{
|
||||||
interface IProcessContextFactory
|
interface IProcessContextFactory
|
||||||
{
|
{
|
||||||
IProcessContext Create(KernelContext context, long pid, ulong addressSpaceSize, InvalidAccessHandler invalidAccessHandler, bool for64Bit);
|
IProcessContext Create(KernelContext context, ulong pid, ulong addressSpaceSize, InvalidAccessHandler invalidAccessHandler, bool for64Bit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
|
||||||
|
|
||||||
public ulong TitleId { get; private set; }
|
public ulong TitleId { get; private set; }
|
||||||
public bool IsApplication { get; private set; }
|
public bool IsApplication { get; private set; }
|
||||||
public long Pid { get; private set; }
|
public ulong Pid { get; private set; }
|
||||||
|
|
||||||
private long _creationTimestamp;
|
private long _creationTimestamp;
|
||||||
private ulong _entrypoint;
|
private ulong _entrypoint;
|
||||||
|
@ -131,7 +131,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
|
||||||
|
|
||||||
Pid = KernelContext.NewKipId();
|
Pid = KernelContext.NewKipId();
|
||||||
|
|
||||||
if (Pid == 0 || (ulong)Pid >= KernelConstants.InitialProcessId)
|
if (Pid == 0 || Pid >= KernelConstants.InitialProcessId)
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException($"Invalid KIP Id {Pid}.");
|
throw new InvalidOperationException($"Invalid KIP Id {Pid}.");
|
||||||
}
|
}
|
||||||
|
@ -239,7 +239,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
|
||||||
|
|
||||||
Pid = KernelContext.NewProcessId();
|
Pid = KernelContext.NewProcessId();
|
||||||
|
|
||||||
if (Pid == -1 || (ulong)Pid < KernelConstants.InitialProcessId)
|
if (Pid == ulong.MaxValue || Pid < KernelConstants.InitialProcessId)
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException($"Invalid Process Id {Pid}.");
|
throw new InvalidOperationException($"Invalid Process Id {Pid}.");
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
|
||||||
{
|
{
|
||||||
class ProcessContextFactory : IProcessContextFactory
|
class ProcessContextFactory : IProcessContextFactory
|
||||||
{
|
{
|
||||||
public IProcessContext Create(KernelContext context, long pid, ulong addressSpaceSize, InvalidAccessHandler invalidAccessHandler, bool for64Bit)
|
public IProcessContext Create(KernelContext context, ulong pid, ulong addressSpaceSize, InvalidAccessHandler invalidAccessHandler, bool for64Bit)
|
||||||
{
|
{
|
||||||
return new ProcessContext(new AddressSpaceManager(addressSpaceSize));
|
return new ProcessContext(new AddressSpaceManager(addressSpaceSize));
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,7 +24,7 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
|
||||||
|
|
||||||
// Process
|
// Process
|
||||||
|
|
||||||
public KernelResult GetProcessId(out long pid, int handle)
|
public KernelResult GetProcessId(out ulong pid, int handle)
|
||||||
{
|
{
|
||||||
KProcess currentProcess = KernelStatic.GetCurrentProcess();
|
KProcess currentProcess = KernelStatic.GetCurrentProcess();
|
||||||
|
|
||||||
|
@ -2280,7 +2280,7 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
|
||||||
return KernelStatic.GetCurrentThread().CurrentCore;
|
return KernelStatic.GetCurrentThread().CurrentCore;
|
||||||
}
|
}
|
||||||
|
|
||||||
public KernelResult GetThreadId(out long threadUid, int handle)
|
public KernelResult GetThreadId(out ulong threadUid, int handle)
|
||||||
{
|
{
|
||||||
KProcess process = KernelStatic.GetCurrentProcess();
|
KProcess process = KernelStatic.GetCurrentProcess();
|
||||||
|
|
||||||
|
|
|
@ -235,12 +235,12 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
|
||||||
resultHigh = (uint)(result >> 32);
|
resultHigh = (uint)(result >> 32);
|
||||||
}
|
}
|
||||||
|
|
||||||
public KernelResult GetProcessId32([R(1)] int handle, [R(1)] out int pidLow, [R(2)] out int pidHigh)
|
public KernelResult GetProcessId32([R(1)] int handle, [R(1)] out uint pidLow, [R(2)] out uint pidHigh)
|
||||||
{
|
{
|
||||||
KernelResult result = _syscall.GetProcessId(out long pid, handle);
|
KernelResult result = _syscall.GetProcessId(out ulong pid, handle);
|
||||||
|
|
||||||
pidLow = (int)(pid & uint.MaxValue);
|
pidLow = (uint)(pid & uint.MaxValue);
|
||||||
pidHigh = (int)(pid >> 32);
|
pidHigh = (uint)(pid >> 32);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -413,7 +413,7 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
|
||||||
|
|
||||||
public KernelResult GetThreadId32([R(1)] int handle, [R(1)] out uint threadUidLow, [R(2)] out uint threadUidHigh)
|
public KernelResult GetThreadId32([R(1)] int handle, [R(1)] out uint threadUidLow, [R(2)] out uint threadUidHigh)
|
||||||
{
|
{
|
||||||
long threadUid;
|
ulong threadUid;
|
||||||
|
|
||||||
KernelResult result = _syscall.GetThreadId(out threadUid, handle);
|
KernelResult result = _syscall.GetThreadId(out threadUid, handle);
|
||||||
|
|
||||||
|
|
|
@ -232,7 +232,7 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
|
||||||
return _syscall.GetSystemTick();
|
return _syscall.GetSystemTick();
|
||||||
}
|
}
|
||||||
|
|
||||||
public KernelResult GetProcessId64([R(1)] int handle, [R(1)] out long pid)
|
public KernelResult GetProcessId64([R(1)] int handle, [R(1)] out ulong pid)
|
||||||
{
|
{
|
||||||
return _syscall.GetProcessId(out pid, handle);
|
return _syscall.GetProcessId(out pid, handle);
|
||||||
}
|
}
|
||||||
|
@ -345,7 +345,7 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
|
||||||
return _syscall.GetCurrentProcessorNumber();
|
return _syscall.GetCurrentProcessorNumber();
|
||||||
}
|
}
|
||||||
|
|
||||||
public KernelResult GetThreadId64([R(1)] int handle, [R(1)] out long threadUid)
|
public KernelResult GetThreadId64([R(1)] int handle, [R(1)] out ulong threadUid)
|
||||||
{
|
{
|
||||||
return _syscall.GetThreadId(out threadUid, handle);
|
return _syscall.GetThreadId(out threadUid, handle);
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
||||||
public int DynamicPriority { get; set; }
|
public int DynamicPriority { get; set; }
|
||||||
public ulong AffinityMask { get; set; }
|
public ulong AffinityMask { get; set; }
|
||||||
|
|
||||||
public long ThreadUid { get; private set; }
|
public ulong ThreadUid { get; private set; }
|
||||||
|
|
||||||
private long _totalTimeRunning;
|
private long _totalTimeRunning;
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,9 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService
|
||||||
{
|
{
|
||||||
class ILibraryAppletProxy : IpcService
|
class ILibraryAppletProxy : IpcService
|
||||||
{
|
{
|
||||||
private readonly long _pid;
|
private readonly ulong _pid;
|
||||||
|
|
||||||
public ILibraryAppletProxy(long pid)
|
public ILibraryAppletProxy(ulong pid)
|
||||||
{
|
{
|
||||||
_pid = pid;
|
_pid = pid;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,9 +4,9 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService
|
||||||
{
|
{
|
||||||
class ISystemAppletProxy : IpcService
|
class ISystemAppletProxy : IpcService
|
||||||
{
|
{
|
||||||
private readonly long _pid;
|
private readonly ulong _pid;
|
||||||
|
|
||||||
public ISystemAppletProxy(long pid)
|
public ISystemAppletProxy(ulong pid)
|
||||||
{
|
{
|
||||||
_pid = pid;
|
_pid = pid;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.Sys
|
||||||
{
|
{
|
||||||
class ISelfController : IpcService
|
class ISelfController : IpcService
|
||||||
{
|
{
|
||||||
private readonly long _pid;
|
private readonly ulong _pid;
|
||||||
|
|
||||||
private KEvent _libraryAppletLaunchableEvent;
|
private KEvent _libraryAppletLaunchableEvent;
|
||||||
private int _libraryAppletLaunchableEventHandle;
|
private int _libraryAppletLaunchableEventHandle;
|
||||||
|
@ -35,7 +35,7 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.Sys
|
||||||
private uint _screenShotImageOrientation = 0;
|
private uint _screenShotImageOrientation = 0;
|
||||||
private uint _idleTimeDetectionExtension = 0;
|
private uint _idleTimeDetectionExtension = 0;
|
||||||
|
|
||||||
public ISelfController(ServiceCtx context, long pid)
|
public ISelfController(ServiceCtx context, ulong pid)
|
||||||
{
|
{
|
||||||
_libraryAppletLaunchableEvent = new KEvent(context.Device.System.KernelContext);
|
_libraryAppletLaunchableEvent = new KEvent(context.Device.System.KernelContext);
|
||||||
_pid = pid;
|
_pid = pid;
|
||||||
|
|
|
@ -4,9 +4,9 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletAE.AllSystemAppletProxiesService.Sys
|
||||||
{
|
{
|
||||||
class IWindowController : IpcService
|
class IWindowController : IpcService
|
||||||
{
|
{
|
||||||
private readonly long _pid;
|
private readonly ulong _pid;
|
||||||
|
|
||||||
public IWindowController(long pid)
|
public IWindowController(ulong pid)
|
||||||
{
|
{
|
||||||
_pid = pid;
|
_pid = pid;
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,9 +5,9 @@ namespace Ryujinx.HLE.HOS.Services.Am.AppletOE.ApplicationProxyService
|
||||||
{
|
{
|
||||||
class IApplicationProxy : IpcService
|
class IApplicationProxy : IpcService
|
||||||
{
|
{
|
||||||
private readonly long _pid;
|
private readonly ulong _pid;
|
||||||
|
|
||||||
public IApplicationProxy(long pid)
|
public IApplicationProxy(ulong pid)
|
||||||
{
|
{
|
||||||
_pid = pid;
|
_pid = pid;
|
||||||
}
|
}
|
||||||
|
|
|
@ -318,7 +318,7 @@ namespace Ryujinx.HLE.HOS.Services.Friend.ServiceCreator
|
||||||
|
|
||||||
// Pid placeholder
|
// Pid placeholder
|
||||||
context.RequestData.ReadInt64();
|
context.RequestData.ReadInt64();
|
||||||
long pid = context.Request.HandleDesc.PId;
|
ulong pid = context.Request.HandleDesc.PId;
|
||||||
|
|
||||||
ulong playHistoryRegistrationKeyPosition = context.Request.PtrBuff[0].Position;
|
ulong playHistoryRegistrationKeyPosition = context.Request.PtrBuff[0].Position;
|
||||||
ulong PlayHistoryRegistrationKeySize = context.Request.PtrBuff[0].Size;
|
ulong PlayHistoryRegistrationKeySize = context.Request.PtrBuff[0].Size;
|
||||||
|
|
|
@ -44,7 +44,7 @@ namespace Ryujinx.HLE.HOS.Services.Ns.Aoc
|
||||||
// CountAddOnContent(pid) -> u32
|
// CountAddOnContent(pid) -> u32
|
||||||
public ResultCode CountAddOnContent(ServiceCtx context)
|
public ResultCode CountAddOnContent(ServiceCtx context)
|
||||||
{
|
{
|
||||||
long pid = context.Request.HandleDesc.PId;
|
ulong pid = context.Request.HandleDesc.PId;
|
||||||
|
|
||||||
// NOTE: Service call arp:r GetApplicationLaunchProperty to get TitleId using the PId.
|
// NOTE: Service call arp:r GetApplicationLaunchProperty to get TitleId using the PId.
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ namespace Ryujinx.HLE.HOS.Services.Ns.Aoc
|
||||||
// ListAddOnContent(u32 start_index, u32 buffer_size, pid) -> (u32 count, buffer<u32>)
|
// ListAddOnContent(u32 start_index, u32 buffer_size, pid) -> (u32 count, buffer<u32>)
|
||||||
public ResultCode ListAddOnContent(ServiceCtx context)
|
public ResultCode ListAddOnContent(ServiceCtx context)
|
||||||
{
|
{
|
||||||
long pid = context.Request.HandleDesc.PId;
|
ulong pid = context.Request.HandleDesc.PId;
|
||||||
|
|
||||||
// NOTE: Service call arp:r GetApplicationLaunchProperty to get TitleId using the PId.
|
// NOTE: Service call arp:r GetApplicationLaunchProperty to get TitleId using the PId.
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ namespace Ryujinx.HLE.HOS.Services.Ns.Aoc
|
||||||
// GetAddOnContentBaseId(pid) -> u64
|
// GetAddOnContentBaseId(pid) -> u64
|
||||||
public ResultCode GetAddOnContentBaseId(ServiceCtx context)
|
public ResultCode GetAddOnContentBaseId(ServiceCtx context)
|
||||||
{
|
{
|
||||||
long pid = context.Request.HandleDesc.PId;
|
ulong pid = context.Request.HandleDesc.PId;
|
||||||
|
|
||||||
// NOTE: Service call arp:r GetApplicationLaunchProperty to get TitleId using the PId.
|
// NOTE: Service call arp:r GetApplicationLaunchProperty to get TitleId using the PId.
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ namespace Ryujinx.HLE.HOS.Services.Ns.Aoc
|
||||||
// PrepareAddOnContent(u32 index, pid)
|
// PrepareAddOnContent(u32 index, pid)
|
||||||
public ResultCode PrepareAddOnContent(ServiceCtx context)
|
public ResultCode PrepareAddOnContent(ServiceCtx context)
|
||||||
{
|
{
|
||||||
long pid = context.Request.HandleDesc.PId;
|
ulong pid = context.Request.HandleDesc.PId;
|
||||||
|
|
||||||
// NOTE: Service call arp:r GetApplicationLaunchProperty to get TitleId using the PId.
|
// NOTE: Service call arp:r GetApplicationLaunchProperty to get TitleId using the PId.
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ namespace Ryujinx.HLE.HOS.Services.Ns.Aoc
|
||||||
// GetAddOnContentListChangedEventWithProcessId(pid) -> handle<copy>
|
// GetAddOnContentListChangedEventWithProcessId(pid) -> handle<copy>
|
||||||
public ResultCode GetAddOnContentListChangedEventWithProcessId(ServiceCtx context)
|
public ResultCode GetAddOnContentListChangedEventWithProcessId(ServiceCtx context)
|
||||||
{
|
{
|
||||||
long pid = context.Request.HandleDesc.PId;
|
ulong pid = context.Request.HandleDesc.PId;
|
||||||
|
|
||||||
// NOTE: Service call arp:r GetApplicationLaunchProperty to get TitleId using the PId.
|
// NOTE: Service call arp:r GetApplicationLaunchProperty to get TitleId using the PId.
|
||||||
|
|
||||||
|
@ -142,7 +142,7 @@ namespace Ryujinx.HLE.HOS.Services.Ns.Aoc
|
||||||
// NotifyMountAddOnContent(pid, u64 title_id)
|
// NotifyMountAddOnContent(pid, u64 title_id)
|
||||||
public ResultCode NotifyMountAddOnContent(ServiceCtx context)
|
public ResultCode NotifyMountAddOnContent(ServiceCtx context)
|
||||||
{
|
{
|
||||||
long pid = context.Request.HandleDesc.PId;
|
ulong pid = context.Request.HandleDesc.PId;
|
||||||
|
|
||||||
// NOTE: Service call arp:r GetApplicationLaunchProperty to get TitleId using the PId.
|
// NOTE: Service call arp:r GetApplicationLaunchProperty to get TitleId using the PId.
|
||||||
|
|
||||||
|
@ -160,7 +160,7 @@ namespace Ryujinx.HLE.HOS.Services.Ns.Aoc
|
||||||
// NotifyUnmountAddOnContent(pid, u64 title_id)
|
// NotifyUnmountAddOnContent(pid, u64 title_id)
|
||||||
public ResultCode NotifyUnmountAddOnContent(ServiceCtx context)
|
public ResultCode NotifyUnmountAddOnContent(ServiceCtx context)
|
||||||
{
|
{
|
||||||
long pid = context.Request.HandleDesc.PId;
|
ulong pid = context.Request.HandleDesc.PId;
|
||||||
|
|
||||||
// NOTE: Service call arp:r GetApplicationLaunchProperty to get TitleId using the PId.
|
// NOTE: Service call arp:r GetApplicationLaunchProperty to get TitleId using the PId.
|
||||||
|
|
||||||
|
@ -175,7 +175,7 @@ namespace Ryujinx.HLE.HOS.Services.Ns.Aoc
|
||||||
// CheckAddOnContentMountStatus(pid)
|
// CheckAddOnContentMountStatus(pid)
|
||||||
public ResultCode CheckAddOnContentMountStatus(ServiceCtx context)
|
public ResultCode CheckAddOnContentMountStatus(ServiceCtx context)
|
||||||
{
|
{
|
||||||
long pid = context.Request.HandleDesc.PId;
|
ulong pid = context.Request.HandleDesc.PId;
|
||||||
|
|
||||||
// NOTE: Service call arp:r GetApplicationLaunchProperty to get TitleId using the PId.
|
// NOTE: Service call arp:r GetApplicationLaunchProperty to get TitleId using the PId.
|
||||||
// Then it does some internal checks and returns InvalidBufferSize if they fail.
|
// Then it does some internal checks and returns InvalidBufferSize if they fail.
|
||||||
|
|
|
@ -13,7 +13,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv
|
||||||
public NvMemoryAllocator MemoryAllocator { get; }
|
public NvMemoryAllocator MemoryAllocator { get; }
|
||||||
public Host1xDevice Host1x { get;}
|
public Host1xDevice Host1x { get;}
|
||||||
|
|
||||||
public Host1xContext(GpuContext gpu, long pid)
|
public Host1xContext(GpuContext gpu, ulong pid)
|
||||||
{
|
{
|
||||||
MemoryAllocator = new NvMemoryAllocator();
|
MemoryAllocator = new NvMemoryAllocator();
|
||||||
Host1x = new Host1xDevice(gpu.Synchronization);
|
Host1x = new Host1xDevice(gpu.Synchronization);
|
||||||
|
|
|
@ -40,7 +40,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv
|
||||||
public static IdDictionary DeviceFileIdRegistry = new IdDictionary();
|
public static IdDictionary DeviceFileIdRegistry = new IdDictionary();
|
||||||
|
|
||||||
private IVirtualMemoryManager _clientMemory;
|
private IVirtualMemoryManager _clientMemory;
|
||||||
private long _owner;
|
private ulong _owner;
|
||||||
|
|
||||||
private bool _transferMemInitialized = false;
|
private bool _transferMemInitialized = false;
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv
|
||||||
{
|
{
|
||||||
if (_deviceFileRegistry.TryGetValue(path, out Type deviceFileClass))
|
if (_deviceFileRegistry.TryGetValue(path, out Type deviceFileClass))
|
||||||
{
|
{
|
||||||
ConstructorInfo constructor = deviceFileClass.GetConstructor(new Type[] { typeof(ServiceCtx), typeof(IVirtualMemoryManager), typeof(long) });
|
ConstructorInfo constructor = deviceFileClass.GetConstructor(new Type[] { typeof(ServiceCtx), typeof(IVirtualMemoryManager), typeof(ulong) });
|
||||||
|
|
||||||
NvDeviceFile deviceFile = (NvDeviceFile)constructor.Invoke(new object[] { context, _clientMemory, _owner });
|
NvDeviceFile deviceFile = (NvDeviceFile)constructor.Invoke(new object[] { context, _clientMemory, _owner });
|
||||||
|
|
||||||
|
|
|
@ -11,11 +11,11 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices
|
||||||
abstract class NvDeviceFile
|
abstract class NvDeviceFile
|
||||||
{
|
{
|
||||||
public readonly ServiceCtx Context;
|
public readonly ServiceCtx Context;
|
||||||
public readonly long Owner;
|
public readonly ulong Owner;
|
||||||
|
|
||||||
public string Path;
|
public string Path;
|
||||||
|
|
||||||
public NvDeviceFile(ServiceCtx context, long owner)
|
public NvDeviceFile(ServiceCtx context, ulong owner)
|
||||||
{
|
{
|
||||||
Context = context;
|
Context = context;
|
||||||
Owner = owner;
|
Owner = owner;
|
||||||
|
|
|
@ -41,7 +41,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostAsGpu
|
||||||
private readonly AddressSpaceContext _asContext;
|
private readonly AddressSpaceContext _asContext;
|
||||||
private readonly NvMemoryAllocator _memoryAllocator;
|
private readonly NvMemoryAllocator _memoryAllocator;
|
||||||
|
|
||||||
public NvHostAsGpuDeviceFile(ServiceCtx context, IVirtualMemoryManager memory, long owner) : base(context, owner)
|
public NvHostAsGpuDeviceFile(ServiceCtx context, IVirtualMemoryManager memory, ulong owner) : base(context, owner)
|
||||||
{
|
{
|
||||||
_asContext = new AddressSpaceContext(context.Device.Gpu.CreateMemoryManager(owner));
|
_asContext = new AddressSpaceContext(context.Device.Gpu.CreateMemoryManager(owner));
|
||||||
_memoryAllocator = new NvMemoryAllocator();
|
_memoryAllocator = new NvMemoryAllocator();
|
||||||
|
|
|
@ -15,7 +15,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel
|
||||||
{
|
{
|
||||||
class NvHostChannelDeviceFile : NvDeviceFile
|
class NvHostChannelDeviceFile : NvDeviceFile
|
||||||
{
|
{
|
||||||
private static readonly ConcurrentDictionary<long, Host1xContext> _host1xContextRegistry = new();
|
private static readonly ConcurrentDictionary<ulong, Host1xContext> _host1xContextRegistry = new();
|
||||||
|
|
||||||
private const uint MaxModuleSyncpoint = 16;
|
private const uint MaxModuleSyncpoint = 16;
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel
|
||||||
|
|
||||||
private NvFence _channelSyncpoint;
|
private NvFence _channelSyncpoint;
|
||||||
|
|
||||||
public NvHostChannelDeviceFile(ServiceCtx context, IVirtualMemoryManager memory, long owner) : base(context, owner)
|
public NvHostChannelDeviceFile(ServiceCtx context, IVirtualMemoryManager memory, ulong owner) : base(context, owner)
|
||||||
{
|
{
|
||||||
_device = context.Device;
|
_device = context.Device;
|
||||||
_memory = memory;
|
_memory = memory;
|
||||||
|
@ -556,9 +556,9 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel
|
||||||
_channelSyncpoint.Id = 0;
|
_channelSyncpoint.Id = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Host1xContext GetHost1XContext(GpuContext gpu, long pid)
|
private static Host1xContext GetHost1XContext(GpuContext gpu, ulong pid)
|
||||||
{
|
{
|
||||||
return _host1xContextRegistry.GetOrAdd(pid, (long key) => new Host1xContext(gpu, key));
|
return _host1xContextRegistry.GetOrAdd(pid, (ulong key) => new Host1xContext(gpu, key));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Destroy()
|
public static void Destroy()
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostChannel
|
||||||
private int _smExceptionBptPauseReportEventHandle;
|
private int _smExceptionBptPauseReportEventHandle;
|
||||||
private int _errorNotifierEventHandle;
|
private int _errorNotifierEventHandle;
|
||||||
|
|
||||||
public NvHostGpuDeviceFile(ServiceCtx context, IVirtualMemoryManager memory, long owner) : base(context, memory, owner)
|
public NvHostGpuDeviceFile(ServiceCtx context, IVirtualMemoryManager memory, ulong owner) : base(context, memory, owner)
|
||||||
{
|
{
|
||||||
_smExceptionBptIntReportEvent = CreateEvent(context, out _smExceptionBptIntReportEventHandle);
|
_smExceptionBptIntReportEvent = CreateEvent(context, out _smExceptionBptIntReportEventHandle);
|
||||||
_smExceptionBptPauseReportEvent = CreateEvent(context, out _smExceptionBptPauseReportEventHandle);
|
_smExceptionBptPauseReportEvent = CreateEvent(context, out _smExceptionBptPauseReportEventHandle);
|
||||||
|
|
|
@ -20,7 +20,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrl
|
||||||
private Switch _device;
|
private Switch _device;
|
||||||
private NvHostEvent[] _events;
|
private NvHostEvent[] _events;
|
||||||
|
|
||||||
public NvHostCtrlDeviceFile(ServiceCtx context, IVirtualMemoryManager memory, long owner) : base(context, owner)
|
public NvHostCtrlDeviceFile(ServiceCtx context, IVirtualMemoryManager memory, ulong owner) : base(context, owner)
|
||||||
{
|
{
|
||||||
if (NxSettings.Settings.TryGetValue("nv!rmos_set_production_mode", out object productionModeSetting))
|
if (NxSettings.Settings.TryGetValue("nv!rmos_set_production_mode", out object productionModeSetting))
|
||||||
{
|
{
|
||||||
|
|
|
@ -16,7 +16,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvHostCtrlGpu
|
||||||
private KEvent _errorEvent;
|
private KEvent _errorEvent;
|
||||||
private KEvent _unknownEvent;
|
private KEvent _unknownEvent;
|
||||||
|
|
||||||
public NvHostCtrlGpuDeviceFile(ServiceCtx context, IVirtualMemoryManager memory, long owner) : base(context, owner)
|
public NvHostCtrlGpuDeviceFile(ServiceCtx context, IVirtualMemoryManager memory, ulong owner) : base(context, owner)
|
||||||
{
|
{
|
||||||
_errorEvent = new KEvent(context.Device.System.KernelContext);
|
_errorEvent = new KEvent(context.Device.System.KernelContext);
|
||||||
_unknownEvent = new KEvent(context.Device.System.KernelContext);
|
_unknownEvent = new KEvent(context.Device.System.KernelContext);
|
||||||
|
|
|
@ -11,9 +11,9 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvMap
|
||||||
{
|
{
|
||||||
private const int FlagNotFreedYet = 1;
|
private const int FlagNotFreedYet = 1;
|
||||||
|
|
||||||
private static ConcurrentDictionary<long, IdDictionary> _maps = new ConcurrentDictionary<long, IdDictionary>();
|
private static ConcurrentDictionary<ulong, IdDictionary> _maps = new ConcurrentDictionary<ulong, IdDictionary>();
|
||||||
|
|
||||||
public NvMapDeviceFile(ServiceCtx context, IVirtualMemoryManager memory, long owner) : base(context, owner)
|
public NvMapDeviceFile(ServiceCtx context, IVirtualMemoryManager memory, ulong owner) : base(context, owner)
|
||||||
{
|
{
|
||||||
IdDictionary dict = _maps.GetOrAdd(Owner, (key) => new IdDictionary());
|
IdDictionary dict = _maps.GetOrAdd(Owner, (key) => new IdDictionary());
|
||||||
|
|
||||||
|
@ -237,7 +237,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvMap
|
||||||
return dict.Add(map);
|
return dict.Add(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static bool DeleteMapWithHandle(long pid, int handle)
|
private static bool DeleteMapWithHandle(ulong pid, int handle)
|
||||||
{
|
{
|
||||||
if (_maps.TryGetValue(pid, out IdDictionary dict))
|
if (_maps.TryGetValue(pid, out IdDictionary dict))
|
||||||
{
|
{
|
||||||
|
@ -247,12 +247,12 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvMap
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void IncrementMapRefCount(long pid, int handle)
|
public static void IncrementMapRefCount(ulong pid, int handle)
|
||||||
{
|
{
|
||||||
GetMapFromHandle(pid, handle)?.IncrementRefCount();
|
GetMapFromHandle(pid, handle)?.IncrementRefCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool DecrementMapRefCount(long pid, int handle)
|
public static bool DecrementMapRefCount(ulong pid, int handle)
|
||||||
{
|
{
|
||||||
NvMapHandle map = GetMapFromHandle(pid, handle);
|
NvMapHandle map = GetMapFromHandle(pid, handle);
|
||||||
|
|
||||||
|
@ -275,7 +275,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv.NvDrvServices.NvMap
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static NvMapHandle GetMapFromHandle(long pid, int handle)
|
public static NvMapHandle GetMapFromHandle(ulong pid, int handle)
|
||||||
{
|
{
|
||||||
if (_maps.TryGetValue(pid, out IdDictionary dict))
|
if (_maps.TryGetValue(pid, out IdDictionary dict))
|
||||||
{
|
{
|
||||||
|
|
|
@ -19,7 +19,7 @@ namespace Ryujinx.HLE.HOS.Services.Pctl
|
||||||
// CreateService(u64, pid) -> object<nn::pctl::detail::ipc::IParentalControlService>
|
// CreateService(u64, pid) -> object<nn::pctl::detail::ipc::IParentalControlService>
|
||||||
public ResultCode CreateService(ServiceCtx context)
|
public ResultCode CreateService(ServiceCtx context)
|
||||||
{
|
{
|
||||||
long pid = context.Request.HandleDesc.PId;
|
ulong pid = context.Request.HandleDesc.PId;
|
||||||
|
|
||||||
MakeObject(context, new IParentalControlService(context, pid, true, _permissionFlag));
|
MakeObject(context, new IParentalControlService(context, pid, true, _permissionFlag));
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ namespace Ryujinx.HLE.HOS.Services.Pctl
|
||||||
// CreateServiceWithoutInitialize(u64, pid) -> object<nn::pctl::detail::ipc::IParentalControlService>
|
// CreateServiceWithoutInitialize(u64, pid) -> object<nn::pctl::detail::ipc::IParentalControlService>
|
||||||
public ResultCode CreateServiceWithoutInitialize(ServiceCtx context)
|
public ResultCode CreateServiceWithoutInitialize(ServiceCtx context)
|
||||||
{
|
{
|
||||||
long pid = context.Request.HandleDesc.PId;
|
ulong pid = context.Request.HandleDesc.PId;
|
||||||
|
|
||||||
MakeObject(context, new IParentalControlService(context, pid, false, _permissionFlag));
|
MakeObject(context, new IParentalControlService(context, pid, false, _permissionFlag));
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,7 @@ namespace Ryujinx.HLE.HOS.Services.Pctl.ParentalControlServiceFactory
|
||||||
{
|
{
|
||||||
class IParentalControlService : IpcService
|
class IParentalControlService : IpcService
|
||||||
{
|
{
|
||||||
private long _pid;
|
private ulong _pid;
|
||||||
private int _permissionFlag;
|
private int _permissionFlag;
|
||||||
private ulong _titleId;
|
private ulong _titleId;
|
||||||
private ParentalControlFlagValue _parentalControlFlag;
|
private ParentalControlFlagValue _parentalControlFlag;
|
||||||
|
@ -19,7 +19,7 @@ namespace Ryujinx.HLE.HOS.Services.Pctl.ParentalControlServiceFactory
|
||||||
private bool _stereoVisionRestrictionConfigurable = true;
|
private bool _stereoVisionRestrictionConfigurable = true;
|
||||||
private bool _stereoVisionRestriction = false;
|
private bool _stereoVisionRestriction = false;
|
||||||
|
|
||||||
public IParentalControlService(ServiceCtx context, long pid, bool withInitialize, int permissionFlag)
|
public IParentalControlService(ServiceCtx context, ulong pid, bool withInitialize, int permissionFlag)
|
||||||
{
|
{
|
||||||
_pid = pid;
|
_pid = pid;
|
||||||
_permissionFlag = permissionFlag;
|
_permissionFlag = permissionFlag;
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
{
|
{
|
||||||
// FIXME: This is wrong but needed to make hb loader works
|
// FIXME: This is wrong but needed to make hb loader works
|
||||||
// TODO: Change this when we will have a way to process via a PM like interface.
|
// TODO: Change this when we will have a way to process via a PM like interface.
|
||||||
long pid = context.Process.Pid;
|
ulong pid = context.Process.Pid;
|
||||||
|
|
||||||
context.ResponseData.Write(pid);
|
context.ResponseData.Write(pid);
|
||||||
|
|
||||||
|
|
|
@ -418,7 +418,7 @@ namespace Ryujinx.HLE.HOS.Services.Ro
|
||||||
return (ResultCode)result;
|
return (ResultCode)result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private ResultCode IsInitialized(long pid)
|
private ResultCode IsInitialized(ulong pid)
|
||||||
{
|
{
|
||||||
if (_owner != null && _owner.Pid == pid)
|
if (_owner != null && _owner.Pid == pid)
|
||||||
{
|
{
|
||||||
|
|
|
@ -5,7 +5,7 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd
|
||||||
{
|
{
|
||||||
class BsdContext
|
class BsdContext
|
||||||
{
|
{
|
||||||
private static ConcurrentDictionary<long, BsdContext> _registry = new ConcurrentDictionary<long, BsdContext>();
|
private static ConcurrentDictionary<ulong, BsdContext> _registry = new ConcurrentDictionary<ulong, BsdContext>();
|
||||||
|
|
||||||
private readonly object _lock = new object();
|
private readonly object _lock = new object();
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd
|
||||||
return LinuxError.SUCCESS;
|
return LinuxError.SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BsdContext GetOrRegister(long processId)
|
public static BsdContext GetOrRegister(ulong processId)
|
||||||
{
|
{
|
||||||
BsdContext context = GetContext(processId);
|
BsdContext context = GetContext(processId);
|
||||||
|
|
||||||
|
@ -137,7 +137,7 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd
|
||||||
return context;
|
return context;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BsdContext GetContext(long processId)
|
public static BsdContext GetContext(ulong processId)
|
||||||
{
|
{
|
||||||
if (!_registry.TryGetValue(processId, out BsdContext processContext))
|
if (!_registry.TryGetValue(processId, out BsdContext processContext))
|
||||||
{
|
{
|
||||||
|
|
|
@ -23,11 +23,11 @@ namespace Ryujinx.HLE.HOS.Services.Ssl.SslService
|
||||||
|
|
||||||
private ISslConnectionBase _connection;
|
private ISslConnectionBase _connection;
|
||||||
private BsdContext _bsdContext;
|
private BsdContext _bsdContext;
|
||||||
private readonly long _processId;
|
private readonly ulong _processId;
|
||||||
|
|
||||||
private byte[] _nextAplnProto;
|
private byte[] _nextAplnProto;
|
||||||
|
|
||||||
public ISslConnection(long processId, SslVersion sslVersion)
|
public ISslConnection(ulong processId, SslVersion sslVersion)
|
||||||
{
|
{
|
||||||
_processId = processId;
|
_processId = processId;
|
||||||
_sslVersion = sslVersion;
|
_sslVersion = sslVersion;
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using Ryujinx.Common.Logging;
|
using Ryujinx.Common.Logging;
|
||||||
using Ryujinx.HLE.HOS.Services.Sockets.Bsd;
|
|
||||||
using Ryujinx.HLE.HOS.Services.Ssl.Types;
|
using Ryujinx.HLE.HOS.Services.Ssl.Types;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
|
@ -9,12 +8,12 @@ namespace Ryujinx.HLE.HOS.Services.Ssl.SslService
|
||||||
{
|
{
|
||||||
private uint _connectionCount;
|
private uint _connectionCount;
|
||||||
|
|
||||||
private readonly long _processId;
|
private readonly ulong _processId;
|
||||||
private readonly SslVersion _sslVersion;
|
private readonly SslVersion _sslVersion;
|
||||||
private ulong _serverCertificateId;
|
private ulong _serverCertificateId;
|
||||||
private ulong _clientCertificateId;
|
private ulong _clientCertificateId;
|
||||||
|
|
||||||
public ISslContext(long processId, SslVersion sslVersion)
|
public ISslContext(ulong processId, SslVersion sslVersion)
|
||||||
{
|
{
|
||||||
_processId = processId;
|
_processId = processId;
|
||||||
_sslVersion = sslVersion;
|
_sslVersion = sslVersion;
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
{
|
{
|
||||||
static class BufferQueue
|
static class BufferQueue
|
||||||
{
|
{
|
||||||
public static BufferQueueCore CreateBufferQueue(Switch device, long pid, out BufferQueueProducer producer, out BufferQueueConsumer consumer)
|
public static BufferQueueCore CreateBufferQueue(Switch device, ulong pid, out BufferQueueProducer producer, out BufferQueueConsumer consumer)
|
||||||
{
|
{
|
||||||
BufferQueueCore core = new BufferQueueCore(device, pid);
|
BufferQueueCore core = new BufferQueueCore(device, pid);
|
||||||
|
|
||||||
|
|
|
@ -40,7 +40,7 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
|
||||||
private KEvent _waitBufferFreeEvent;
|
private KEvent _waitBufferFreeEvent;
|
||||||
private KEvent _frameAvailableEvent;
|
private KEvent _frameAvailableEvent;
|
||||||
|
|
||||||
public long Owner { get; }
|
public ulong Owner { get; }
|
||||||
|
|
||||||
public bool Active { get; private set; }
|
public bool Active { get; private set; }
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
|
||||||
|
|
||||||
public event Action BufferQueued;
|
public event Action BufferQueued;
|
||||||
|
|
||||||
public BufferQueueCore(Switch device, long pid)
|
public BufferQueueCore(Switch device, ulong pid)
|
||||||
{
|
{
|
||||||
Slots = new BufferSlotArray();
|
Slots = new BufferSlotArray();
|
||||||
IsAbandoned = false;
|
IsAbandoned = false;
|
||||||
|
|
|
@ -44,7 +44,7 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
|
||||||
public IGraphicBufferProducer Producer;
|
public IGraphicBufferProducer Producer;
|
||||||
public BufferItemConsumer Consumer;
|
public BufferItemConsumer Consumer;
|
||||||
public BufferQueueCore Core;
|
public BufferQueueCore Core;
|
||||||
public long Owner;
|
public ulong Owner;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class TextureCallbackInformation
|
private class TextureCallbackInformation
|
||||||
|
@ -92,7 +92,7 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public IGraphicBufferProducer OpenLayer(long pid, long layerId)
|
public IGraphicBufferProducer OpenLayer(ulong pid, long layerId)
|
||||||
{
|
{
|
||||||
bool needCreate;
|
bool needCreate;
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
|
||||||
return GetProducerByLayerId(layerId);
|
return GetProducerByLayerId(layerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
public IGraphicBufferProducer CreateLayer(long pid, out long layerId)
|
public IGraphicBufferProducer CreateLayer(ulong pid, out long layerId)
|
||||||
{
|
{
|
||||||
layerId = 1;
|
layerId = 1;
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
|
||||||
return GetProducerByLayerId(layerId);
|
return GetProducerByLayerId(layerId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CreateLayerFromId(long pid, long layerId)
|
private void CreateLayerFromId(ulong pid, long layerId)
|
||||||
{
|
{
|
||||||
lock (Lock)
|
lock (Lock)
|
||||||
{
|
{
|
||||||
|
|
|
@ -42,7 +42,7 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
|
||||||
Buffer = parcel.ReadUnmanagedType<NvGraphicBuffer>();
|
Buffer = parcel.ReadUnmanagedType<NvGraphicBuffer>();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void IncrementNvMapHandleRefCount(long pid)
|
public void IncrementNvMapHandleRefCount(ulong pid)
|
||||||
{
|
{
|
||||||
NvMapDeviceFile.IncrementMapRefCount(pid, Buffer.NvMapId);
|
NvMapDeviceFile.IncrementMapRefCount(pid, Buffer.NvMapId);
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ namespace Ryujinx.HLE.HOS.Services.SurfaceFlinger
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DecrementNvMapHandleRefCount(long pid)
|
public void DecrementNvMapHandleRefCount(ulong pid)
|
||||||
{
|
{
|
||||||
NvMapDeviceFile.DecrementMapRefCount(pid, Buffer.NvMapId);
|
NvMapDeviceFile.DecrementMapRefCount(pid, Buffer.NvMapId);
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ namespace Ryujinx.HLE.HOS.Services.Vi.RootService.ApplicationDisplayService
|
||||||
long displayId = context.RequestData.ReadInt64();
|
long displayId = context.RequestData.ReadInt64();
|
||||||
long appletResourceUserId = context.RequestData.ReadInt64();
|
long appletResourceUserId = context.RequestData.ReadInt64();
|
||||||
|
|
||||||
long pid = context.Device.System.AppletState.AppletResourceUserIds.GetData<long>((int)appletResourceUserId);
|
ulong pid = context.Device.System.AppletState.AppletResourceUserIds.GetData<ulong>((int)appletResourceUserId);
|
||||||
|
|
||||||
context.Device.System.SurfaceFlinger.CreateLayer(pid, out long layerId);
|
context.Device.System.SurfaceFlinger.CreateLayer(pid, out long layerId);
|
||||||
context.Device.System.SurfaceFlinger.SetRenderLayer(layerId);
|
context.Device.System.SurfaceFlinger.SetRenderLayer(layerId);
|
||||||
|
|
|
@ -54,7 +54,7 @@ namespace Ryujinx.HLE.HOS
|
||||||
Activate();
|
Activate();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool CanInstallOnPid(long pid)
|
private bool CanInstallOnPid(ulong pid)
|
||||||
{
|
{
|
||||||
// Do not allow tampering of kernel processes.
|
// Do not allow tampering of kernel processes.
|
||||||
if (pid < KernelConstants.InitialProcessId)
|
if (pid < KernelConstants.InitialProcessId)
|
||||||
|
|
Loading…
Reference in a new issue