IVirtualMemoryManager.cs 897 B

12345678910111213141516171819202122232425262728
  1. using System;
  2. namespace Ryujinx.Memory
  3. {
  4. public interface IVirtualMemoryManager
  5. {
  6. void Map(ulong va, ulong pa, ulong size);
  7. void Unmap(ulong va, ulong size);
  8. T Read<T>(ulong va) where T : unmanaged;
  9. void Read(ulong va, Span<byte> data);
  10. void Write<T>(ulong va, T value) where T : unmanaged;
  11. void Write(ulong va, ReadOnlySpan<byte> data);
  12. ReadOnlySpan<byte> GetSpan(ulong va, int size, bool tracked = false);
  13. WritableRegion GetWritableRegion(ulong va, int size);
  14. ref T GetRef<T>(ulong va) where T : unmanaged;
  15. (ulong address, ulong size)[] GetPhysicalRegions(ulong va, ulong size);
  16. bool IsMapped(ulong va);
  17. bool IsRangeMapped(ulong va, ulong size);
  18. ulong GetPhysicalAddress(ulong va);
  19. void TrackingReprotect(ulong va, ulong size, MemoryPermission protection);
  20. }
  21. }