|
|
@@ -30,6 +30,25 @@ void SharedMemory::SetupStandardSteadyClock(const Common::UUID& clock_source_id,
|
|
|
}
|
|
|
|
|
|
void SharedMemory::UpdateLocalSystemClockContext(const Clock::SystemClockContext& context) {
|
|
|
+ // lower and upper are related to the measurement point for the steady time point,
|
|
|
+ // and compare equal on boot
|
|
|
+ const s64 time_point_ns = context.steady_time_point.time_point * 1'000'000'000LL;
|
|
|
+
|
|
|
+ // This adjusts for some sort of time skew
|
|
|
+ // Both 0 on boot
|
|
|
+ const s64 diff_scale = 0;
|
|
|
+ const u32 shift_amount = 0;
|
|
|
+
|
|
|
+ const Clock::ContinuousAdjustmentTimePoint adjustment{
|
|
|
+ .measurement_offset = system.CoreTiming().GetGlobalTimeNs().count(),
|
|
|
+ .diff_scale = diff_scale,
|
|
|
+ .shift_amount = shift_amount,
|
|
|
+ .lower = time_point_ns,
|
|
|
+ .upper = time_point_ns,
|
|
|
+ .clock_source_id = context.steady_time_point.clock_source_id,
|
|
|
+ };
|
|
|
+
|
|
|
+ StoreToLockFreeAtomicType(&GetFormat()->continuous_adjustment_timepoint, adjustment);
|
|
|
StoreToLockFreeAtomicType(&GetFormat()->standard_local_system_clock_context, context);
|
|
|
}
|
|
|
|