mirror of
https://git.ryujinx.app/projects/Kenji-NX.git
synced 2026-10-07 18:08:53 +02:00
misc: Use nint instead of IntPtr
This commit is contained in:
@@ -31,7 +31,7 @@ namespace Ryujinx.Cpu.Jit
|
||||
/// <inheritdoc/>
|
||||
public bool UsesPrivateAllocations => false;
|
||||
|
||||
public IntPtr PageTablePointer => _addressSpace.Pointer;
|
||||
public nint PageTablePointer => _addressSpace.Pointer;
|
||||
|
||||
public MemoryManagerType Type => _unsafeMode ? MemoryManagerType.HostMappedUnsafe : MemoryManagerType.HostMapped;
|
||||
|
||||
@@ -186,7 +186,7 @@ namespace Ryujinx.Cpu.Jit
|
||||
for (int i = 0; i < regions.Length; i++)
|
||||
{
|
||||
var guestRegion = guestRegions[i];
|
||||
IntPtr pointer = _backingMemory.GetPointer(guestRegion.Address, guestRegion.Size);
|
||||
nint pointer = _backingMemory.GetPointer(guestRegion.Address, guestRegion.Size);
|
||||
regions[i] = new HostMemoryRange((nuint)(ulong)pointer, guestRegion.Size);
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace Ryujinx.Cpu.Nce
|
||||
/// <inheritdoc/>
|
||||
public bool UsesPrivateAllocations => false;
|
||||
|
||||
public IntPtr PageTablePointer => IntPtr.Zero;
|
||||
public nint PageTablePointer => nint.Zero;
|
||||
|
||||
public ulong ReservedSize => (ulong)_addressSpace.Pointer.ToInt64();
|
||||
|
||||
@@ -174,7 +174,7 @@ namespace Ryujinx.Cpu.Nce
|
||||
for (int i = 0; i < regions.Length; i++)
|
||||
{
|
||||
var guestRegion = guestRegions[i];
|
||||
IntPtr pointer = _backingMemory.GetPointer(guestRegion.Address, guestRegion.Size);
|
||||
nint pointer = _backingMemory.GetPointer(guestRegion.Address, guestRegion.Size);
|
||||
regions[i] = new HostMemoryRange((nuint)(ulong)pointer, guestRegion.Size);
|
||||
}
|
||||
|
||||
|
||||
@@ -58,8 +58,8 @@ namespace Ryujinx.Cpu.Nce
|
||||
}
|
||||
}
|
||||
|
||||
private delegate void ThreadStart(IntPtr nativeContextPtr);
|
||||
private delegate IntPtr GetTpidrEl0();
|
||||
private delegate void ThreadStart(nint nativeContextPtr);
|
||||
private delegate nint GetTpidrEl0();
|
||||
private static MemoryBlock _codeBlock;
|
||||
private static ThreadStart _threadStart;
|
||||
private static GetTpidrEl0 _getTpidrEl0;
|
||||
@@ -80,7 +80,7 @@ namespace Ryujinx.Cpu.Nce
|
||||
|
||||
MemoryBlock codeBlock = null;
|
||||
|
||||
NativeSignalHandler.InitializeSignalHandler((IntPtr oldSignalHandlerSegfaultPtr, IntPtr signalHandlerPtr) =>
|
||||
NativeSignalHandler.InitializeSignalHandler((nint oldSignalHandlerSegfaultPtr, nint signalHandlerPtr) =>
|
||||
{
|
||||
uint[] ehWrapperCode = NcePatcher.GenerateWrapperExceptionHandler(oldSignalHandlerSegfaultPtr, signalHandlerPtr);
|
||||
ulong ehWrapperCodeOffset = codeWriter.Write(ehWrapperCode);
|
||||
|
||||
@@ -14,7 +14,7 @@ namespace Ryujinx.Cpu.Nce
|
||||
private readonly NceNativeContext _context;
|
||||
private readonly ExceptionCallbacks _exceptionCallbacks;
|
||||
|
||||
internal IntPtr NativeContextPtr => _context.BasePtr;
|
||||
internal nint NativeContextPtr => _context.BasePtr;
|
||||
|
||||
public ulong Pc => 0UL;
|
||||
|
||||
@@ -70,7 +70,7 @@ namespace Ryujinx.Cpu.Nce
|
||||
public NceExecutionContext(ExceptionCallbacks exceptionCallbacks)
|
||||
{
|
||||
_svcHandler = OnSupervisorCall;
|
||||
IntPtr svcHandlerPtr = Marshal.GetFunctionPointerForDelegate(_svcHandler);
|
||||
nint svcHandlerPtr = Marshal.GetFunctionPointerForDelegate(_svcHandler);
|
||||
|
||||
_context = new NceNativeContext();
|
||||
|
||||
@@ -108,7 +108,7 @@ namespace Ryujinx.Cpu.Nce
|
||||
|
||||
public void Exit()
|
||||
{
|
||||
_context.GetStorage().HostThreadHandle = IntPtr.Zero;
|
||||
_context.GetStorage().HostThreadHandle = nint.Zero;
|
||||
|
||||
UnregisterAlternateStack();
|
||||
}
|
||||
@@ -143,8 +143,8 @@ namespace Ryujinx.Cpu.Nce
|
||||
|
||||
public void RequestInterrupt()
|
||||
{
|
||||
IntPtr threadHandle = _context.GetStorage().HostThreadHandle;
|
||||
if (threadHandle != IntPtr.Zero)
|
||||
nint threadHandle = _context.GetStorage().HostThreadHandle;
|
||||
if (threadHandle != nint.Zero)
|
||||
{
|
||||
// Bit 0 set means that the thread is currently running managed code.
|
||||
// Bit 1 set means that an interrupt was requested for the thread.
|
||||
|
||||
@@ -8,7 +8,7 @@ namespace Ryujinx.Cpu.Nce
|
||||
{
|
||||
private readonly MemoryBlock _impl;
|
||||
|
||||
public IntPtr Pointer => _impl.Pointer;
|
||||
public nint Pointer => _impl.Pointer;
|
||||
|
||||
public NceMemoryBlock(ulong size, MemoryAllocationFlags flags)
|
||||
{
|
||||
|
||||
@@ -20,16 +20,16 @@ namespace Ryujinx.Cpu.Nce
|
||||
public uint Fpsr;
|
||||
public uint InManaged;
|
||||
public ulong HostSp;
|
||||
public IntPtr HostThreadHandle;
|
||||
public nint HostThreadHandle;
|
||||
public ulong TempStorage;
|
||||
public IntPtr SvcCallHandler;
|
||||
public nint SvcCallHandler;
|
||||
}
|
||||
|
||||
private static NativeCtxStorage _dummyStorage = new();
|
||||
|
||||
private readonly MemoryBlock _block;
|
||||
|
||||
public IntPtr BasePtr => _block.Pointer;
|
||||
public nint BasePtr => _block.Pointer;
|
||||
|
||||
public NceNativeContext()
|
||||
{
|
||||
@@ -95,4 +95,4 @@ namespace Ryujinx.Cpu.Nce
|
||||
|
||||
public void Dispose() => _block.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,8 +9,8 @@ namespace Ryujinx.Cpu.Nce
|
||||
private delegate bool SuspendThreadHandlerDelegate();
|
||||
private static GetTickCounterDelegate _getTickCounter;
|
||||
private static SuspendThreadHandlerDelegate _suspendThreadHandler;
|
||||
private static IntPtr _getTickCounterPtr;
|
||||
private static IntPtr _suspendThreadHandlerPtr;
|
||||
private static nint _getTickCounterPtr;
|
||||
private static nint _suspendThreadHandlerPtr;
|
||||
|
||||
[ThreadStatic]
|
||||
private static NceExecutionContext _context;
|
||||
@@ -42,14 +42,14 @@ namespace Ryujinx.Cpu.Nce
|
||||
return _context.OnInterrupt();
|
||||
}
|
||||
|
||||
public static IntPtr GetTickCounterAccessFunctionPointer()
|
||||
public static nint GetTickCounterAccessFunctionPointer()
|
||||
{
|
||||
return _getTickCounterPtr;
|
||||
}
|
||||
|
||||
public static IntPtr GetSuspendThreadHandlerFunctionPointer()
|
||||
public static nint GetSuspendThreadHandlerFunctionPointer()
|
||||
{
|
||||
return _suspendThreadHandlerPtr;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -425,7 +425,7 @@ namespace Ryujinx.Cpu.Nce
|
||||
return asm.GetCode();
|
||||
}
|
||||
|
||||
internal static uint[] GenerateWrapperExceptionHandler(IntPtr oldSignalHandlerSegfaultPtr, IntPtr signalHandlerPtr)
|
||||
internal static uint[] GenerateWrapperExceptionHandler(nint oldSignalHandlerSegfaultPtr, nint signalHandlerPtr)
|
||||
{
|
||||
Assembler asm = new();
|
||||
|
||||
@@ -600,4 +600,4 @@ namespace Ryujinx.Cpu.Nce
|
||||
return new RegisterSaveRestore((int)IntCalleeSavedRegsMask, unchecked((int)FpCalleeSavedRegsMask), OperandType.FP64, hasCall: true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace Ryujinx.Cpu.Nce
|
||||
|
||||
public static int UnixSuspendSignal => OperatingSystem.IsMacOS() ? SigUsr2MacOS : SigUsr2Linux;
|
||||
|
||||
public static IntPtr GetCurrentThreadHandle()
|
||||
public static nint GetCurrentThreadHandle()
|
||||
{
|
||||
if (OperatingSystem.IsLinux() || OperatingSystem.IsMacOS() || PlatformInfo.IsBionic)
|
||||
{
|
||||
@@ -22,7 +22,7 @@ namespace Ryujinx.Cpu.Nce
|
||||
}
|
||||
}
|
||||
|
||||
public static void SuspendThread(IntPtr handle)
|
||||
public static void SuspendThread(nint handle)
|
||||
{
|
||||
if (PlatformInfo.IsBionic)
|
||||
{
|
||||
|
||||
@@ -6,9 +6,9 @@ namespace Ryujinx.Cpu.Nce
|
||||
static class NceThreadPalAndroid
|
||||
{
|
||||
[DllImport("libc", SetLastError = true)]
|
||||
private static extern int pthread_kill(IntPtr thread, int sig);
|
||||
private static extern int pthread_kill(nint thread, int sig);
|
||||
|
||||
public static void SuspendThread(IntPtr handle)
|
||||
public static void SuspendThread(nint handle)
|
||||
{
|
||||
int result = pthread_kill(handle, NceThreadPal.UnixSuspendSignal);
|
||||
if (result != 0)
|
||||
@@ -17,4 +17,4 @@ namespace Ryujinx.Cpu.Nce
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,26 +6,26 @@ namespace Ryujinx.Cpu.Nce
|
||||
static class NceThreadPalUnix
|
||||
{
|
||||
[DllImport("libc", SetLastError = true)]
|
||||
private static extern IntPtr pthread_self();
|
||||
private static extern nint pthread_self();
|
||||
|
||||
[DllImport("libc", SetLastError = true)]
|
||||
private static extern int pthread_threadid_np(IntPtr arg0, out ulong tid);
|
||||
private static extern int pthread_threadid_np(nint arg0, out ulong tid);
|
||||
|
||||
[DllImport("libpthread", SetLastError = true)]
|
||||
private static extern int pthread_kill(IntPtr thread, int sig);
|
||||
private static extern int pthread_kill(nint thread, int sig);
|
||||
|
||||
public static IntPtr GetCurrentThreadHandle()
|
||||
public static nint GetCurrentThreadHandle()
|
||||
{
|
||||
return pthread_self();
|
||||
}
|
||||
|
||||
public static ulong GetCurrentThreadId()
|
||||
{
|
||||
pthread_threadid_np(IntPtr.Zero, out ulong tid);
|
||||
pthread_threadid_np(nint.Zero, out ulong tid);
|
||||
return tid;
|
||||
}
|
||||
|
||||
public static void SuspendThread(IntPtr handle)
|
||||
public static void SuspendThread(nint handle)
|
||||
{
|
||||
int result = pthread_kill(handle, NceThreadPal.UnixSuspendSignal);
|
||||
if (result != 0)
|
||||
@@ -34,4 +34,4 @@ namespace Ryujinx.Cpu.Nce
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,10 +10,10 @@ namespace Ryujinx.Cpu.Nce
|
||||
|
||||
private struct Entry
|
||||
{
|
||||
public IntPtr ThreadId;
|
||||
public IntPtr NativeContextPtr;
|
||||
public nint ThreadId;
|
||||
public nint NativeContextPtr;
|
||||
|
||||
public Entry(IntPtr threadId, IntPtr nativeContextPtr)
|
||||
public Entry(nint threadId, nint nativeContextPtr)
|
||||
{
|
||||
ThreadId = threadId;
|
||||
NativeContextPtr = nativeContextPtr;
|
||||
@@ -22,7 +22,7 @@ namespace Ryujinx.Cpu.Nce
|
||||
|
||||
private static MemoryBlock _block;
|
||||
|
||||
public static IntPtr EntriesPointer => _block.Pointer + 8;
|
||||
public static nint EntriesPointer => _block.Pointer + 8;
|
||||
|
||||
static NceThreadTable()
|
||||
{
|
||||
@@ -30,7 +30,7 @@ namespace Ryujinx.Cpu.Nce
|
||||
_block.Write(0UL, 0UL);
|
||||
}
|
||||
|
||||
public static int Register(IntPtr threadId, IntPtr nativeContextPtr)
|
||||
public static int Register(nint threadId, nint nativeContextPtr)
|
||||
{
|
||||
Span<Entry> entries = GetStorage();
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace Ryujinx.Cpu.Nce
|
||||
|
||||
for (int i = 0; i < MaxThreads; i++)
|
||||
{
|
||||
if (entries[i].ThreadId == IntPtr.Zero)
|
||||
if (entries[i].ThreadId == nint.Zero)
|
||||
{
|
||||
entries[i] = new Entry(threadId, nativeContextPtr);
|
||||
|
||||
@@ -63,7 +63,7 @@ namespace Ryujinx.Cpu.Nce
|
||||
|
||||
lock (_block)
|
||||
{
|
||||
if (entries[tableIndex].ThreadId != IntPtr.Zero)
|
||||
if (entries[tableIndex].ThreadId != nint.Zero)
|
||||
{
|
||||
entries[tableIndex] = default;
|
||||
|
||||
@@ -71,7 +71,7 @@ namespace Ryujinx.Cpu.Nce
|
||||
|
||||
for (int i = (int)currentThreadCount - 1; i >= 0; i--)
|
||||
{
|
||||
if (entries[i].ThreadId != IntPtr.Zero)
|
||||
if (entries[i].ThreadId != nint.Zero)
|
||||
{
|
||||
break;
|
||||
}
|
||||
@@ -94,4 +94,4 @@ namespace Ryujinx.Cpu.Nce
|
||||
return new Span<Entry>((void*)_block.GetPointer(8UL, (ulong)Unsafe.SizeOf<Entry>() * MaxThreads), MaxThreads);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,7 +128,7 @@ namespace Ryujinx.Cpu.Signal
|
||||
}
|
||||
}
|
||||
|
||||
public static void InstallUnixAlternateStackForCurrentThread(IntPtr stackPtr, ulong stackSize)
|
||||
public static void InstallUnixAlternateStackForCurrentThread(nint stackPtr, ulong stackSize)
|
||||
{
|
||||
UnixSignalHandlerRegistration.RegisterAlternateStack(stackPtr, stackSize);
|
||||
}
|
||||
@@ -138,7 +138,7 @@ namespace Ryujinx.Cpu.Signal
|
||||
UnixSignalHandlerRegistration.UnregisterAlternateStack();
|
||||
}
|
||||
|
||||
public static void InstallUnixSignalHandler(int sigNum, IntPtr action)
|
||||
public static void InstallUnixSignalHandler(int sigNum, nint action)
|
||||
{
|
||||
UnixSignalHandlerRegistration.RegisterExceptionHandler(sigNum, action);
|
||||
}
|
||||
|
||||
@@ -28,17 +28,17 @@ namespace Ryujinx.Cpu.Signal
|
||||
public struct SigActionBionic
|
||||
{
|
||||
public int sa_flags;
|
||||
public IntPtr sa_handler;
|
||||
public nint sa_handler;
|
||||
public SigSet sa_mask;
|
||||
public IntPtr sa_restorer;
|
||||
public nint sa_restorer;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential, Pack = 8)]
|
||||
public struct Stack
|
||||
{
|
||||
public IntPtr ss_sp;
|
||||
public nint ss_sp;
|
||||
public int ss_flags;
|
||||
public IntPtr ss_size;
|
||||
public nint ss_size;
|
||||
}
|
||||
|
||||
private const int SIGSEGV = 11;
|
||||
@@ -58,7 +58,7 @@ namespace Ryujinx.Cpu.Signal
|
||||
private static partial int sigaction(int signum, nint sigAction, out SigAction oldAction);
|
||||
|
||||
[SupportedOSPlatform("android"), LibraryImport("libc", SetLastError = true)]
|
||||
private static partial int sigaction(int signum, IntPtr sigAction, out SigActionBionic oldAction);
|
||||
private static partial int sigaction(int signum, nint sigAction, out SigActionBionic oldAction);
|
||||
|
||||
[LibraryImport("libc", SetLastError = true)]
|
||||
private static partial int sigemptyset(ref SigSet set);
|
||||
@@ -152,13 +152,13 @@ namespace Ryujinx.Cpu.Signal
|
||||
return old;
|
||||
}
|
||||
|
||||
public static void RegisterAlternateStack(IntPtr stackPtr, ulong stackSize)
|
||||
public static void RegisterAlternateStack(nint stackPtr, ulong stackSize)
|
||||
{
|
||||
Stack stack = new()
|
||||
{
|
||||
ss_sp = stackPtr,
|
||||
ss_flags = SS_AUTODISARM,
|
||||
ss_size = (IntPtr)stackSize
|
||||
ss_size = (nint)stackSize
|
||||
};
|
||||
|
||||
int result = sigaltstack(ref stack, out _);
|
||||
@@ -184,7 +184,7 @@ namespace Ryujinx.Cpu.Signal
|
||||
}
|
||||
}
|
||||
|
||||
public static void RegisterExceptionHandler(int sigNum, IntPtr action)
|
||||
public static void RegisterExceptionHandler(int sigNum, nint action)
|
||||
{
|
||||
int result;
|
||||
|
||||
@@ -200,7 +200,7 @@ namespace Ryujinx.Cpu.Signal
|
||||
|
||||
result = sigaction(sigNum, ref sig, out SigActionBionic oldu);
|
||||
|
||||
if (oldu.sa_handler != IntPtr.Zero)
|
||||
if (oldu.sa_handler != nint.Zero)
|
||||
{
|
||||
throw new InvalidOperationException($"SIG{sigNum} is already in use.");
|
||||
}
|
||||
@@ -222,7 +222,7 @@ namespace Ryujinx.Cpu.Signal
|
||||
|
||||
result = sigaction(sigNum, ref sig, out SigAction oldu);
|
||||
|
||||
if (oldu.sa_handler != IntPtr.Zero)
|
||||
if (oldu.sa_handler != nint.Zero)
|
||||
{
|
||||
throw new InvalidOperationException($"SIG{sigNum} is already in use.");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user