source: rtems/cpukit/score/src/coretodset.c @ 3246b0f8

4.115
Last change on this file since 3246b0f8 was 3246b0f8, checked in by Sebastian Huber <sebastian.huber@…>, on 06/13/12 at 09:29:53

score: New structure TOD_Control

Group the global TOD variables (_TOD_Now, _TOD_Uptime, and _TOD_Is_set)
in a structure to reduce address loads in _TOD_Tickle_ticks().

  • Property mode set to 100644
File size: 1.1 KB
Line 
1/*
2 *  Time of Day (TOD) Handler -- Set Time
3 */
4
5/*  COPYRIGHT (c) 1989-2007.
6 *  On-Line Applications Research Corporation (OAR).
7 *
8 *  The license and distribution terms for this file may be
9 *  found in the file LICENSE in this distribution or at
10 *  http://www.rtems.com/license/LICENSE.
11 */
12
13#if HAVE_CONFIG_H
14#include "config.h"
15#endif
16
17#include <rtems/system.h>
18#include <rtems/score/object.h>
19#include <rtems/score/thread.h>
20#include <rtems/score/timestamp.h>
21#include <rtems/score/tod.h>
22#include <rtems/score/watchdog.h>
23
24void _TOD_Set_with_timestamp(
25  const Timestamp_Control *tod
26)
27{
28  Watchdog_Interval seconds_next = _Timestamp_Get_seconds( tod );
29  Watchdog_Interval seconds_now;
30
31  _Thread_Disable_dispatch();
32  _TOD_Deactivate();
33
34  seconds_now = _TOD_Seconds_since_epoch();
35
36  if ( seconds_next < seconds_now )
37    _Watchdog_Adjust_seconds( WATCHDOG_BACKWARD, seconds_now - seconds_next );
38  else
39    _Watchdog_Adjust_seconds( WATCHDOG_FORWARD, seconds_next - seconds_now );
40
41  _TOD.now = *tod;
42  _TOD.is_set = true;
43
44  _TOD_Activate();
45  _Thread_Enable_dispatch();
46}
Note: See TracBrowser for help on using the repository browser.