0
0
Fork 0

misc: Make PID unsigned long instead of long (#3043)

This commit is contained in:
Mary 2022-02-09 21:18:07 +01:00 committed by GitHub
parent 86b37d0ff7
commit 6dffe0fad4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
43 changed files with 99 additions and 100 deletions

View file

@ -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))
{ {

View file

@ -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,

View file

@ -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)
{ {

View file

@ -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;

View file

@ -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;

View file

@ -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;
} }

View file

@ -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)
{ {

View file

@ -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);
} }
} }

View file

@ -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}.");
} }

View file

@ -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));
} }

View file

@ -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();

View file

@ -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);

View file

@ -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);
} }

View file

@ -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;

View file

@ -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;
} }

View file

@ -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;
} }

View file

@ -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;

View file

@ -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;
} }

View file

@ -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;
} }

View file

@ -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;

View file

@ -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.

View file

@ -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);

View file

@ -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 });

View file

@ -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;

View file

@ -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();

View file

@ -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()

View file

@ -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);

View file

@ -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))
{ {

View file

@ -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);

View file

@ -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))
{ {

View file

@ -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));

View file

@ -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;

View file

@ -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);

View file

@ -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)
{ {

View file

@ -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))
{ {

View file

@ -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;

View file

@ -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;

View file

@ -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);

View file

@ -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;

View file

@ -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)
{ {

View file

@ -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);

View file

@ -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);

View file

@ -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)