public void SetSteadyClockRawTimePoint(ITickSource tickSource, TimeSpanType currentTimePoint) { SteadyClockContext context = ReadObjectFromSharedMemory <SteadyClockContext>(SteadyClockContextOffset, 4); TimeSpanType ticksTimeSpan = TimeSpanType.FromTicks(tickSource.Counter, tickSource.Frequency); context.InternalOffset = (ulong)(currentTimePoint.NanoSeconds - ticksTimeSpan.NanoSeconds); WriteObjectToSharedMemory(SteadyClockContextOffset, 4, context); }
public void SetSteadyClockRawTimePoint(KThread thread, TimeSpanType currentTimePoint) { SteadyClockContext context = ReadObjectFromSharedMemory <SteadyClockContext>(SteadyClockContextOffset, 4); TimeSpanType ticksTimeSpan = TimeSpanType.FromTicks(thread.Context.CntpctEl0, thread.Context.CntfrqEl0); context.InternalOffset = (ulong)(currentTimePoint.NanoSeconds - ticksTimeSpan.NanoSeconds); WriteObjectToSharedMemory(SteadyClockContextOffset, 4, context); }
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 SetupStandardSteadyClock(KThread thread, UInt128 clockSourceId, TimeSpanType currentTimePoint) { TimeSpanType ticksTimeSpan; // As this may be called before the guest code, we support passing a null thread to make this api usable. if (thread == null) { ticksTimeSpan = TimeSpanType.FromSeconds(0); } else { ticksTimeSpan = TimeSpanType.FromTicks(thread.Context.CntpctEl0, thread.Context.CntfrqEl0); } SteadyClockContext context = new SteadyClockContext { InternalOffset = (ulong)(currentTimePoint.NanoSeconds - ticksTimeSpan.NanoSeconds), ClockSourceId = clockSourceId }; WriteObjectToSharedMemory(SteadyClockContextOffset, 4, context); }