/ src / Ryujinx.Memory / IWritableBlock.cs
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  }