aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.Cpu/Tracking/CpuRegionHandle.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.Cpu/Tracking/CpuRegionHandle.cs')
-rw-r--r--src/Ryujinx.Cpu/Tracking/CpuRegionHandle.cs37
1 files changed, 37 insertions, 0 deletions
diff --git a/src/Ryujinx.Cpu/Tracking/CpuRegionHandle.cs b/src/Ryujinx.Cpu/Tracking/CpuRegionHandle.cs
new file mode 100644
index 00000000..e766460f
--- /dev/null
+++ b/src/Ryujinx.Cpu/Tracking/CpuRegionHandle.cs
@@ -0,0 +1,37 @@
+using Ryujinx.Memory.Tracking;
+using System;
+
+namespace Ryujinx.Cpu.Tracking
+{
+ public class CpuRegionHandle : IRegionHandle
+ {
+ private readonly RegionHandle _impl;
+
+ public bool Dirty => _impl.Dirty;
+ public bool Unmapped => _impl.Unmapped;
+ public ulong Address => _impl.Address;
+ public ulong Size => _impl.Size;
+ public ulong EndAddress => _impl.EndAddress;
+
+ internal CpuRegionHandle(RegionHandle impl)
+ {
+ _impl = impl;
+ }
+
+ public void Dispose() => _impl.Dispose();
+ public bool DirtyOrVolatile() => _impl.DirtyOrVolatile();
+ public void ForceDirty() => _impl.ForceDirty();
+ public IRegionHandle GetHandle() => _impl;
+ public void RegisterAction(RegionSignal action) => _impl.RegisterAction(action);
+ public void RegisterPreciseAction(PreciseRegionSignal action) => _impl.RegisterPreciseAction(action);
+ public void RegisterDirtyEvent(Action action) => _impl.RegisterDirtyEvent(action);
+ public void Reprotect(bool asDirty = false) => _impl.Reprotect(asDirty);
+
+ public bool OverlapsWith(ulong address, ulong size) => _impl.OverlapsWith(address, size);
+
+ public bool RangeEquals(CpuRegionHandle other)
+ {
+ return _impl.RealAddress == other._impl.RealAddress && _impl.RealSize == other._impl.RealSize;
+ }
+ }
+}