using Ryujinx.Memory; using Ryujinx.Memory.Range; using System; using System.Buffers; using System.Collections.Generic; namespace Ryujinx.Tests.Memory { public class MockVirtualMemoryManager : IVirtualMemoryManager { public bool Supports4KBPages => true; public bool NoMappings = false; public event Action OnProtect; public MockVirtualMemoryManager(ulong size, int pageSize) { } public void Map(ulong va, ulong pa, ulong size, MemoryMapFlags flags) { throw new NotImplementedException(); } public void MapForeign(ulong va, nuint hostAddress, ulong size) { throw new NotImplementedException(); } public void Unmap(ulong va, ulong size) { throw new NotImplementedException(); } public T Read(ulong va) where T : unmanaged { throw new NotImplementedException(); } public void Read(ulong va, Span data) { throw new NotImplementedException(); } public void Write(ulong va, T value) where T : unmanaged { throw new NotImplementedException(); } public void Write(ulong va, ReadOnlySpan data) { throw new NotImplementedException(); } public bool WriteWithRedundancyCheck(ulong va, ReadOnlySpan data) { throw new NotImplementedException(); } public ReadOnlySequence GetReadOnlySequence(ulong va, int size, bool tracked = false) { throw new NotImplementedException(); } public ReadOnlySpan GetSpan(ulong va, int size, bool tracked = false) { throw new NotImplementedException(); } public WritableRegion GetWritableRegion(ulong va, int size, bool tracked = false) { throw new NotImplementedException(); } public ref T GetRef(ulong va) where T : unmanaged { throw new NotImplementedException(); } IEnumerable IVirtualMemoryManager.GetHostRegions(ulong va, ulong size) { throw new NotImplementedException(); } IEnumerable IVirtualMemoryManager.GetPhysicalRegions(ulong va, ulong size) { return NoMappings ? Array.Empty() : new MemoryRange[] { new MemoryRange(va, size) }; } public bool IsMapped(ulong va) { return true; } public bool IsRangeMapped(ulong va, ulong size) { return true; } public ulong GetPhysicalAddress(ulong va) { throw new NotImplementedException(); } public void SignalMemoryTracking(ulong va, ulong size, bool write, bool precise = false, int? exemptId = null) { throw new NotImplementedException(); } public void Reprotect(ulong va, ulong size, MemoryPermission protection) { throw new NotImplementedException(); } public void TrackingReprotect(ulong va, ulong size, MemoryPermission protection, bool guest) { OnProtect?.Invoke(va, size, protection); } } }