From 97d0c6242368f443c50395b2fa9d99a59f1df1e8 Mon Sep 17 00:00:00 2001 From: Thomas Guillemard Date: Sun, 14 Jul 2019 22:50:11 +0200 Subject: Accurately implement steady & system clocks (#732) * Improve SteadyClock implementation accuracy * Rewrite system clocks to be accurate * Implement IStaticService 100 & 101 * Add time:* permissions * Address comments * Realign TimePermissions definitions * Address gdk's comments * Fix after rebase --- .../Time/Clock/StandardLocalSystemClockCore.cs | 59 ++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 Ryujinx.HLE/HOS/Services/Time/Clock/StandardLocalSystemClockCore.cs (limited to 'Ryujinx.HLE/HOS/Services/Time/Clock/StandardLocalSystemClockCore.cs') diff --git a/Ryujinx.HLE/HOS/Services/Time/Clock/StandardLocalSystemClockCore.cs b/Ryujinx.HLE/HOS/Services/Time/Clock/StandardLocalSystemClockCore.cs new file mode 100644 index 00000000..16550199 --- /dev/null +++ b/Ryujinx.HLE/HOS/Services/Time/Clock/StandardLocalSystemClockCore.cs @@ -0,0 +1,59 @@ +using Ryujinx.HLE.HOS.Kernel.Threading; + +namespace Ryujinx.HLE.HOS.Services.Time.Clock +{ + class StandardLocalSystemClockCore : SystemClockCore + { + private SteadyClockCore _steadyClockCore; + private SystemClockContext _context; + + private static StandardLocalSystemClockCore instance; + + public static StandardLocalSystemClockCore Instance + { + get + { + if (instance == null) + { + instance = new StandardLocalSystemClockCore(SteadyClockCore.Instance); + } + + return instance; + } + } + + public StandardLocalSystemClockCore(SteadyClockCore steadyClockCore) + { + _steadyClockCore = steadyClockCore; + _context = new SystemClockContext(); + + _context.SteadyTimePoint.ClockSourceId = steadyClockCore.GetClockSourceId(); + } + + public override ResultCode Flush(SystemClockContext context) + { + // TODO: set:sys SetUserSystemClockContext + + return ResultCode.Success; + } + + public override SteadyClockCore GetSteadyClockCore() + { + return _steadyClockCore; + } + + public override ResultCode GetSystemClockContext(KThread thread, out SystemClockContext context) + { + context = _context; + + return ResultCode.Success; + } + + public override ResultCode SetSystemClockContext(SystemClockContext context) + { + _context = context; + + return ResultCode.Success; + } + } +} -- cgit v1.2.3