diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-04-02 18:23:59 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-04-02 18:23:59 +0000 |
commit | 812da546889eea0b6dea7eb2954f46a4c43d1314 (patch) | |
tree | 22fc95d921c3544de770454a2f9c604d5d0a27a2 /cpukit/score/src/coretodset.c | |
parent | 2007-04-02 Joel Sherrill <joel@OARcorp.com> (diff) | |
download | rtems-812da546889eea0b6dea7eb2954f46a4c43d1314.tar.bz2 |
2007-04-02 Joel Sherrill <joel@OARcorp.com>
* itron/src/itrontime.c, libcsupport/src/__gettod.c,
posix/include/rtems/posix/time.h, posix/include/rtems/posix/timer.h,
posix/src/clockgettime.c, posix/src/clocksettime.c,
posix/src/nanosleep.c, posix/src/posixtimespecsubtract.c,
posix/src/posixtimespectointerval.c, posix/src/ptimer1.c,
posix/src/sleep.c, rtems/Makefile.am,
rtems/include/rtems/rtems/clock.h, rtems/include/rtems/rtems/timer.h,
rtems/include/rtems/rtems/types.h, rtems/src/clockget.c,
rtems/src/clockset.c, rtems/src/clocktodtoseconds.c,
rtems/src/clocktodvalidate.c, rtems/src/taskwakewhen.c,
score/Makefile.am, score/include/rtems/score/tod.h,
score/inline/rtems/score/tod.inl, score/src/coretod.c,
score/src/coretodset.c: Convert from Classic API style TOD_Control as
fundamental time structure to POSIX struct timespec. Add
clock_get_uptime().
* rtems/src/clockgetuptime.c, score/src/coretodget.c,
score/src/coretodgetuptime.c: New files.
* score/src/coretodtickle.c, score/src/coretodtoseconds.c,
score/src/coretodvalidate.c: Removed.
Diffstat (limited to '')
-rw-r--r-- | cpukit/score/src/coretodset.c | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/cpukit/score/src/coretodset.c b/cpukit/score/src/coretodset.c index ae7ec65b30..21f77d8001 100644 --- a/cpukit/score/src/coretodset.c +++ b/cpukit/score/src/coretodset.c @@ -30,37 +30,33 @@ * new date and time structure. * * Input parameters: - * the_tod - pointer to the time and date structure - * seconds_since_epoch - seconds since system epoch + * time - pointer to the time and date structure * * Output parameters: NONE */ void _TOD_Set( - TOD_Control *the_tod, - Watchdog_Interval seconds_since_epoch + const struct timespec *time ) { - Watchdog_Interval ticks_until_next_second; - _Thread_Disable_dispatch(); _TOD_Deactivate(); - if ( seconds_since_epoch < _TOD_Seconds_since_epoch ) + if ( time->tv_sec < _TOD_Seconds_since_epoch ) _Watchdog_Adjust_seconds( WATCHDOG_BACKWARD, - _TOD_Seconds_since_epoch - seconds_since_epoch ); + _TOD_Seconds_since_epoch - time->tv_sec ); else _Watchdog_Adjust_seconds( WATCHDOG_FORWARD, - seconds_since_epoch - _TOD_Seconds_since_epoch ); - - ticks_until_next_second = _TOD_Ticks_per_second; - if ( ticks_until_next_second > the_tod->ticks ) - ticks_until_next_second -= the_tod->ticks; + time->tv_sec - _TOD_Seconds_since_epoch ); - _TOD_Current = *the_tod; - _TOD_Seconds_since_epoch = seconds_since_epoch; + _TOD_Seconds_since_epoch = time->tv_sec; _TOD_Is_set = TRUE; - _TOD_Activate( ticks_until_next_second ); + + /* POSIX format TOD (timespec) */ + _TOD_Now = *time; + _TOD_Now.tv_sec += TOD_SECONDS_1970_THROUGH_1988; + + _TOD_Activate( 0 ); _Thread_Enable_dispatch(); } |