forked from MeloNX/MeloNX
28 lines
878 B
C#
28 lines
878 B
C#
using System;
|
|
using System.Buffers;
|
|
|
|
namespace Ryujinx.Memory
|
|
{
|
|
public interface IWritableBlock
|
|
{
|
|
/// <summary>
|
|
/// Writes data to CPU mapped memory, with write tracking.
|
|
/// </summary>
|
|
/// <param name="va">Virtual address to write the data into</param>
|
|
/// <param name="data">Data to be written</param>
|
|
/// <exception cref="InvalidMemoryRegionException">Throw for unhandled invalid or unmapped memory accesses</exception>
|
|
void Write(ulong va, ReadOnlySequence<byte> data)
|
|
{
|
|
foreach (ReadOnlyMemory<byte> segment in data)
|
|
{
|
|
Write(va, segment.Span);
|
|
va += (ulong)segment.Length;
|
|
}
|
|
}
|
|
|
|
void Write(ulong va, ReadOnlySpan<byte> data);
|
|
|
|
void WriteUntracked(ulong va, ReadOnlySpan<byte> data) => Write(va, data);
|
|
}
|
|
}
|