From 875fff0ae3d7676bbd8816caf1b32e33142d2e73 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Wed, 23 Jul 2014 15:35:35 -0500 Subject: Add _TOD_Adjust to SCORE TOD Handler. This lays the proper structure for doing future work on time adjustment algorithms. Any TOD adjustments should be requested at the API level and performed at the SCORE level. Additionally updated a test. --- cpukit/score/src/coretodadjust.c | 51 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 cpukit/score/src/coretodadjust.c (limited to 'cpukit/score/src/coretodadjust.c') diff --git a/cpukit/score/src/coretodadjust.c b/cpukit/score/src/coretodadjust.c new file mode 100644 index 0000000000..09cf01ad7c --- /dev/null +++ b/cpukit/score/src/coretodadjust.c @@ -0,0 +1,51 @@ +/** + * @file + * + * @brief Adjust the Time of Time + * @ingroup ScoreTOD + */ + +/* + * COPYRIGHT (c) 1989-2014. + * On-Line Applications Research Corporation (OAR). + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rtems.org/license/LICENSE. + */ + +#if HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include + +void _TOD_Adjust( + const Timestamp_Control delta +) +{ + Timestamp_Control tod; + Timestamp_Control *tod_ptr; + + /* + * Currently, RTEMS does the adjustment in one movement. + * Given interest, requirements, and sponsorship, a future + * enhancement would be to adjust the time in smaller increments + * at each clock tick. Until then, there is no outstanding + * adjustment. + */ + + /* + * This prevents context switches while we are adjusting the TOD + */ + _Thread_Disable_dispatch(); + + tod_ptr = _TOD_Get_with_nanoseconds( &tod, &_TOD.now ); + + _Timestamp_Add_to( tod_ptr, &delta ); + + _TOD_Set_with_timestamp( tod_ptr ); + + _Thread_Enable_dispatch(); +} -- cgit v1.2.3