From 00579927e43bf55ee06ae02933c1e755fb4120eb Mon Sep 17 00:00:00 2001 From: gdkchan Date: Wed, 28 Nov 2018 20:18:09 -0200 Subject: Better process implementation (#491) * Initial implementation of KProcess * Some improvements to the memory manager, implement back guest stack trace printing * Better GetInfo implementation, improve checking in some places with information from process capabilities * Allow the cpu to read/write from the correct memory locations for accesses crossing a page boundary * Change long -> ulong for address/size on memory related methods to avoid unnecessary casts * Attempt at implementing ldr:ro with new KProcess * Allow BSS with size 0 on ldr:ro * Add checking for memory block slab heap usage, return errors if full, exit gracefully * Use KMemoryBlockSize const from KMemoryManager * Allow all methods to read from non-contiguous locations * Fix for TransactParcelAuto * Address PR feedback, additionally fix some small issues related to the KIP loader and implement SVCs GetProcessId, GetProcessList, GetSystemInfo, CreatePort and ManageNamedPort * Fix wrong check for source pages count from page list on MapPhysicalMemory * Fix some issues with UnloadNro on ldr:ro --- Ryujinx.HLE/Memory/DeviceMemory.cs | 130 ------------------------------------- 1 file changed, 130 deletions(-) delete mode 100644 Ryujinx.HLE/Memory/DeviceMemory.cs (limited to 'Ryujinx.HLE/Memory/DeviceMemory.cs') diff --git a/Ryujinx.HLE/Memory/DeviceMemory.cs b/Ryujinx.HLE/Memory/DeviceMemory.cs deleted file mode 100644 index 3c5f2e5f..00000000 --- a/Ryujinx.HLE/Memory/DeviceMemory.cs +++ /dev/null @@ -1,130 +0,0 @@ -using System; -using System.Runtime.InteropServices; - -namespace Ryujinx.HLE.Memory -{ - class DeviceMemory : IDisposable - { - public const long RamSize = 4L * 1024 * 1024 * 1024; - - public ArenaAllocator Allocator { get; private set; } - - public IntPtr RamPointer { get; private set; } - - private unsafe byte* RamPtr; - - public unsafe DeviceMemory() - { - Allocator = new ArenaAllocator(RamSize); - - RamPointer = Marshal.AllocHGlobal(new IntPtr(RamSize)); - - RamPtr = (byte*)RamPointer; - } - - public sbyte ReadSByte(long Position) - { - return (sbyte)ReadByte(Position); - } - - public short ReadInt16(long Position) - { - return (short)ReadUInt16(Position); - } - - public int ReadInt32(long Position) - { - return (int)ReadUInt32(Position); - } - - public long ReadInt64(long Position) - { - return (long)ReadUInt64(Position); - } - - public unsafe byte ReadByte(long Position) - { - return *((byte*)(RamPtr + Position)); - } - - public unsafe ushort ReadUInt16(long Position) - { - return *((ushort*)(RamPtr + Position)); - } - - public unsafe uint ReadUInt32(long Position) - { - return *((uint*)(RamPtr + Position)); - } - - public unsafe ulong ReadUInt64(long Position) - { - return *((ulong*)(RamPtr + Position)); - } - - public void WriteSByte(long Position, sbyte Value) - { - WriteByte(Position, (byte)Value); - } - - public void WriteInt16(long Position, short Value) - { - WriteUInt16(Position, (ushort)Value); - } - - public void WriteInt32(long Position, int Value) - { - WriteUInt32(Position, (uint)Value); - } - - public void WriteInt64(long Position, long Value) - { - WriteUInt64(Position, (ulong)Value); - } - - public unsafe void WriteByte(long Position, byte Value) - { - *((byte*)(RamPtr + Position)) = Value; - } - - public unsafe void WriteUInt16(long Position, ushort Value) - { - *((ushort*)(RamPtr + Position)) = Value; - } - - public unsafe void WriteUInt32(long Position, uint Value) - { - *((uint*)(RamPtr + Position)) = Value; - } - - public unsafe void WriteUInt64(long Position, ulong Value) - { - *((ulong*)(RamPtr + Position)) = Value; - } - - public void FillWithZeros(long Position, int Size) - { - int Size8 = Size & ~(8 - 1); - - for (int Offs = 0; Offs < Size8; Offs += 8) - { - WriteInt64(Position + Offs, 0); - } - - for (int Offs = Size8; Offs < (Size - Size8); Offs++) - { - WriteByte(Position + Offs, 0); - } - } - - public void Dispose() - { - Dispose(true); - } - - protected virtual void Dispose(bool Disposing) - { - Marshal.FreeHGlobal(RamPointer); - } - } -} \ No newline at end of file -- cgit v1.2.3