IWritableBlock.cs
1 using System; 2 using System.Buffers; 3 4 namespace Ryujinx.Memory 5 { 6 public interface IWritableBlock 7 { 8 /// <summary> 9 /// Writes data to CPU mapped memory, with write tracking. 10 /// </summary> 11 /// <param name="va">Virtual address to write the data into</param> 12 /// <param name="data">Data to be written</param> 13 /// <exception cref="InvalidMemoryRegionException">Throw for unhandled invalid or unmapped memory accesses</exception> 14 void Write(ulong va, ReadOnlySequence<byte> data) 15 { 16 foreach (ReadOnlyMemory<byte> segment in data) 17 { 18 Write(va, segment.Span); 19 va += (ulong)segment.Length; 20 } 21 } 22 23 void Write(ulong va, ReadOnlySpan<byte> data); 24 25 void WriteUntracked(ulong va, ReadOnlySpan<byte> data) => Write(va, data); 26 } 27 }