From cee712105850ac3385cd0091a923438167433f9f Mon Sep 17 00:00:00 2001 From: TSR Berry <20988865+TSRBerry@users.noreply.github.com> Date: Sat, 8 Apr 2023 01:22:00 +0200 Subject: Move solution and projects to src --- Ryujinx.HLE/HOS/Services/Time/TimeSharedMemory.cs | 114 ---------------------- 1 file changed, 114 deletions(-) delete mode 100644 Ryujinx.HLE/HOS/Services/Time/TimeSharedMemory.cs (limited to 'Ryujinx.HLE/HOS/Services/Time/TimeSharedMemory.cs') diff --git a/Ryujinx.HLE/HOS/Services/Time/TimeSharedMemory.cs b/Ryujinx.HLE/HOS/Services/Time/TimeSharedMemory.cs deleted file mode 100644 index 7063290b..00000000 --- a/Ryujinx.HLE/HOS/Services/Time/TimeSharedMemory.cs +++ /dev/null @@ -1,114 +0,0 @@ -using Ryujinx.Cpu; -using Ryujinx.HLE.HOS.Kernel.Memory; -using Ryujinx.HLE.HOS.Services.Time.Clock; -using Ryujinx.HLE.HOS.Services.Time.Types; -using Ryujinx.HLE.Utilities; -using System; -using System.Runtime.CompilerServices; -using System.Threading; - -namespace Ryujinx.HLE.HOS.Services.Time -{ - class TimeSharedMemory - { - private Switch _device; - private KSharedMemory _sharedMemory; - private SharedMemoryStorage _timeSharedMemoryStorage; - private int _timeSharedMemorySize; - - private const uint SteadyClockContextOffset = 0x00; - private const uint LocalSystemClockContextOffset = 0x38; - private const uint NetworkSystemClockContextOffset = 0x80; - private const uint AutomaticCorrectionEnabledOffset = 0xC8; - - public void Initialize(Switch device, KSharedMemory sharedMemory, SharedMemoryStorage timeSharedMemoryStorage, int timeSharedMemorySize) - { - _device = device; - _sharedMemory = sharedMemory; - _timeSharedMemoryStorage = timeSharedMemoryStorage; - _timeSharedMemorySize = timeSharedMemorySize; - - // Clean the shared memory - timeSharedMemoryStorage.ZeroFill(); - } - - public KSharedMemory GetSharedMemory() - { - return _sharedMemory; - } - - public void SetupStandardSteadyClock(ITickSource tickSource, UInt128 clockSourceId, TimeSpanType currentTimePoint) - { - TimeSpanType ticksTimeSpan = TimeSpanType.FromTicks(tickSource.Counter, tickSource.Frequency); - - SteadyClockContext context = new SteadyClockContext - { - InternalOffset = (ulong)(currentTimePoint.NanoSeconds - ticksTimeSpan.NanoSeconds), - ClockSourceId = clockSourceId - }; - - WriteObjectToSharedMemory(SteadyClockContextOffset, 4, context); - } - - public void SetAutomaticCorrectionEnabled(bool isAutomaticCorrectionEnabled) - { - // We convert the bool to byte here as a bool in C# takes 4 bytes... - WriteObjectToSharedMemory(AutomaticCorrectionEnabledOffset, 0, Convert.ToByte(isAutomaticCorrectionEnabled)); - } - - public void SetSteadyClockRawTimePoint(ITickSource tickSource, TimeSpanType currentTimePoint) - { - SteadyClockContext context = ReadObjectFromSharedMemory(SteadyClockContextOffset, 4); - TimeSpanType ticksTimeSpan = TimeSpanType.FromTicks(tickSource.Counter, tickSource.Frequency); - - context.InternalOffset = (ulong)(currentTimePoint.NanoSeconds - ticksTimeSpan.NanoSeconds); - - WriteObjectToSharedMemory(SteadyClockContextOffset, 4, context); - } - - public void UpdateLocalSystemClockContext(SystemClockContext context) - { - WriteObjectToSharedMemory(LocalSystemClockContextOffset, 4, context); - } - - public void UpdateNetworkSystemClockContext(SystemClockContext context) - { - WriteObjectToSharedMemory(NetworkSystemClockContextOffset, 4, context); - } - - private T ReadObjectFromSharedMemory(ulong offset, ulong padding) where T : unmanaged - { - T result; - uint index; - uint possiblyNewIndex; - - do - { - index = _timeSharedMemoryStorage.GetRef(offset); - - ulong objectOffset = offset + 4 + padding + (ulong)((index & 1) * Unsafe.SizeOf()); - - result = _timeSharedMemoryStorage.GetRef(objectOffset); - - Thread.MemoryBarrier(); - - possiblyNewIndex = _device.Memory.Read(offset); - } while (index != possiblyNewIndex); - - return result; - } - - private void WriteObjectToSharedMemory(ulong offset, ulong padding, T value) where T : unmanaged - { - uint newIndex = _timeSharedMemoryStorage.GetRef(offset) + 1; - - ulong objectOffset = offset + 4 + padding + (ulong)((newIndex & 1) * Unsafe.SizeOf()); - - _timeSharedMemoryStorage.GetRef(objectOffset) = value; - - Thread.MemoryBarrier(); - - _timeSharedMemoryStorage.GetRef(offset) = newIndex; - } - } -} -- cgit v1.2.3