HRESULT Library_spot_native_Microsoft_SPOT_Hardware_Utility::SetLocalTime___STATIC__VOID__mscorlibSystemDateTime( CLR_RT_StackFrame& stack ) { NATIVE_PROFILE_CLR_CORE(); TINYCLR_HEADER(); CLR_INT64 utc = 0; INT64 utcBefore; INT64 utcNow; CLR_INT64* val = Library_corlib_native_System_DateTime::GetValuePtr( stack.Arg0() ); FAULT_ON_NULL(val); utc = *val - TIME_ZONE_OFFSET; utcBefore = Time_GetUtcTime(); utcNow = Time_SetUtcTime( utc, false ); // correct the uptime if(utcNow > utcBefore) { g_CLR_RT_ExecutionEngine.m_startTime += (utcNow - utcBefore); } else { g_CLR_RT_ExecutionEngine.m_startTime -= (utcBefore - utcNow); } TINYCLR_NOCLEANUP(); }
HRESULT Library_spot_Time_native_Microsoft_SPOT_Time_TimeService::SetUtcTime___STATIC__VOID__I8( CLR_RT_StackFrame& stack ) { TINYCLR_HEADER(); Time_SetUtcTime( stack.Arg0().NumericByRef().s8, false ); TINYCLR_NOCLEANUP_NOLABEL(); }
HRESULT Library_spot_Time_native_Microsoft_SPOT_Time_TimeService::SetUtcTime___STATIC__VOID__I8( CLR_RT_StackFrame& stack ) { TINYCLR_HEADER(); INT64 utc = stack.Arg0().NumericByRef().s8; INT64 utcBefore = Time_GetUtcTime(); INT64 utcNow = Time_SetUtcTime( utc, false ); // correct the uptime if(utcNow > utcBefore) { g_CLR_RT_ExecutionEngine.m_startTime += (utcNow - utcBefore); } else { g_CLR_RT_ExecutionEngine.m_startTime -= (utcBefore - utcNow); } TINYCLR_NOCLEANUP_NOLABEL(); }