IVirtualMemoryManagerTracked.cs
1 using Ryujinx.Memory; 2 using Ryujinx.Memory.Tracking; 3 using System; 4 using System.Collections.Generic; 5 6 namespace Ryujinx.Cpu 7 { 8 public interface IVirtualMemoryManagerTracked : IVirtualMemoryManager 9 { 10 /// <summary> 11 /// Reads data from CPU mapped memory, with read tracking 12 /// </summary> 13 /// <typeparam name="T">Type of the data being read</typeparam> 14 /// <param name="va">Virtual address of the data in memory</param> 15 /// <returns>The data</returns> 16 T ReadTracked<T>(ulong va) where T : unmanaged; 17 18 /// <summary> 19 /// Writes data to CPU mapped memory, without write tracking. 20 /// </summary> 21 /// <param name="va">Virtual address to write the data into</param> 22 /// <param name="data">Data to be written</param> 23 void WriteUntracked(ulong va, ReadOnlySpan<byte> data); 24 25 /// <summary> 26 /// Obtains a memory tracking handle for the given virtual region. This should be disposed when finished with. 27 /// </summary> 28 /// <param name="address">CPU virtual address of the region</param> 29 /// <param name="size">Size of the region</param> 30 /// <param name="id">Handle ID</param> 31 /// <param name="flags">Region flags</param> 32 /// <returns>The memory tracking handle</returns> 33 RegionHandle BeginTracking(ulong address, ulong size, int id, RegionFlags flags = RegionFlags.None); 34 35 /// <summary> 36 /// Obtains a memory tracking handle for the given virtual region, with a specified granularity. This should be disposed when finished with. 37 /// </summary> 38 /// <param name="address">CPU virtual address of the region</param> 39 /// <param name="size">Size of the region</param> 40 /// <param name="handles">Handles to inherit state from or reuse. When none are present, provide null</param> 41 /// <param name="granularity">Desired granularity of write tracking</param> 42 /// <param name="id">Handle ID</param> 43 /// <param name="flags">Region flags</param> 44 /// <returns>The memory tracking handle</returns> 45 MultiRegionHandle BeginGranularTracking(ulong address, ulong size, IEnumerable<IRegionHandle> handles, ulong granularity, int id, RegionFlags flags = RegionFlags.None); 46 47 /// <summary> 48 /// Obtains a smart memory tracking handle for the given virtual region, with a specified granularity. This should be disposed when finished with. 49 /// </summary> 50 /// <param name="address">CPU virtual address of the region</param> 51 /// <param name="size">Size of the region</param> 52 /// <param name="granularity">Desired granularity of write tracking</param> 53 /// <param name="id">Handle ID</param> 54 /// <returns>The memory tracking handle</returns> 55 SmartMultiRegionHandle BeginSmartGranularTracking(ulong address, ulong size, ulong granularity, int id); 56 } 57 }