using System; namespace Ryujinx.Memory { public interface IVirtualMemoryManager { void Map(ulong va, ulong pa, ulong size); void Unmap(ulong va, ulong size); T Read(ulong va) where T : unmanaged; void Read(ulong va, Span data); void Write(ulong va, T value) where T : unmanaged; void Write(ulong va, ReadOnlySpan data); ReadOnlySpan GetSpan(ulong va, int size, bool tracked = false); WritableRegion GetWritableRegion(ulong va, int size); ref T GetRef(ulong va) where T : unmanaged; (ulong address, ulong size)[] GetPhysicalRegions(ulong va, ulong size); bool IsMapped(ulong va); bool IsRangeMapped(ulong va, ulong size); ulong GetPhysicalAddress(ulong va); void SignalMemoryTracking(ulong va, ulong size, bool write); void TrackingReprotect(ulong va, ulong size, MemoryPermission protection); } }