public override void Signal(ulong address, ulong size, bool write) { _tracking.ProtectVirtualRegion(this, MemoryPermission.ReadAndWrite); // Remove our protection immedately. foreach (var handle in Handles) { handle.Signal(address, size, write); } }
/// <summary> /// Updates the protection for this virtual region, and all child physical regions. /// </summary> public void UpdateProtection() { // Re-evaluate protection for all physical children. _tracking.ProtectVirtualRegion(this, GetRequiredPermission()); lock (_tracking.TrackingLock) { foreach (var child in _physicalChildren) { child.UpdateProtection(); } } }
/// <summary> /// Updates the protection for this virtual region. /// </summary> public bool UpdateProtection() { MemoryPermission permission = GetRequiredPermission(); if (_lastPermission != permission) { _tracking.ProtectVirtualRegion(this, permission); _lastPermission = permission; return(true); } return(false); }
/// <summary> /// Updates the protection for this virtual region. /// </summary> public void UpdateProtection() { _tracking.ProtectVirtualRegion(this, GetRequiredPermission()); }