IWritableBlock.cs 878 B

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