HSharedMem.cs 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using ChocolArm64.Memory;
  2. using System;
  3. using System.Collections.Generic;
  4. namespace Ryujinx.HLE.OsHle.Handles
  5. {
  6. class HSharedMem
  7. {
  8. private List<(AMemory, long)> Positions;
  9. public EventHandler<EventArgs> MemoryMapped;
  10. public EventHandler<EventArgs> MemoryUnmapped;
  11. public HSharedMem()
  12. {
  13. Positions = new List<(AMemory, long)>();
  14. }
  15. public void AddVirtualPosition(AMemory Memory, long Position)
  16. {
  17. lock (Positions)
  18. {
  19. Positions.Add((Memory, Position));
  20. MemoryMapped?.Invoke(this, EventArgs.Empty);
  21. }
  22. }
  23. public void RemoveVirtualPosition(AMemory Memory, long Position)
  24. {
  25. lock (Positions)
  26. {
  27. Positions.Remove((Memory, Position));
  28. MemoryUnmapped?.Invoke(this, EventArgs.Empty);
  29. }
  30. }
  31. public (AMemory, long)[] GetVirtualPositions()
  32. {
  33. return Positions.ToArray();
  34. }
  35. }
  36. }