diff options
author | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-04-05 21:17:27 +0000 |
---|---|---|
committer | Joel Sherrill <joel.sherrill@OARcorp.com> | 2007-04-05 21:17:27 +0000 |
commit | 412dbff629308745d967718fbd91e272c91b055c (patch) | |
tree | 7fb92204e9ab59173a92e8950d633cc4b39e16ac /cpukit/posix/src/posixtimespecabsolutetimeout.c | |
parent | 2007-04-05 Joel Sherrill <joel@OARcorp.com> (diff) | |
download | rtems-412dbff629308745d967718fbd91e272c91b055c.tar.bz2 |
2007-04-05 Joel Sherrill <joel@OARcorp.com>
* posix/Makefile.am, posix/include/rtems/posix/time.h,
posix/src/adjtime.c, posix/src/alarm.c, posix/src/clockgetres.c,
posix/src/condtimedwait.c, posix/src/mqueuetimedreceive.c,
posix/src/mqueuetimedsend.c, posix/src/mutextimedlock.c,
posix/src/nanosleep.c, posix/src/posixtimespecabsolutetimeout.c,
posix/src/pthread.c, posix/src/pthreadcreate.c,
posix/src/pthreadsetschedparam.c, posix/src/ptimer1.c,
posix/src/sched.c, posix/src/semtimedwait.c,
posix/src/sigtimedwait.c, posix/src/ualarm.c,
rtems/src/clocktodtoseconds.c, score/Makefile.am,
score/preinstall.am, score/include/rtems/score/tod.h,
score/inline/rtems/score/tod.inl, score/src/coretod.c,
score/src/coretodget.c, score/src/coretodgetuptime.c,
score/src/coretodset.c, score/src/coretodtickle.c: Provide timespec
manipulation routines in the SuperCore. Use them everywhere possible.
This lead to significant cleanup in the API routines and eliminated
some of the same code from the POSIX API. At this point, the
SuperCore keeps time in POSIX timespec format properly from 1970. You
just cannot set it before 1988 in keeping with RTEMS traditional
behavior.
* score/include/rtems/score/timespec.h, score/src/timespecaddto.c,
score/src/timespecfromticks.c, score/src/timespecisvalid.c,
score/src/timespeclessthan.c, score/src/timespecsubtract.c,
score/src/timespectoticks.c: New files.
* posix/src/posixintervaltotimespec.c,
posix/src/posixtimespecsubtract.c,
posix/src/posixtimespectointerval.c: Removed.
Diffstat (limited to 'cpukit/posix/src/posixtimespecabsolutetimeout.c')
-rw-r--r-- | cpukit/posix/src/posixtimespecabsolutetimeout.c | 39 |
1 files changed, 16 insertions, 23 deletions
diff --git a/cpukit/posix/src/posixtimespecabsolutetimeout.c b/cpukit/posix/src/posixtimespecabsolutetimeout.c index df70c90533..52208e380b 100644 --- a/cpukit/posix/src/posixtimespecabsolutetimeout.c +++ b/cpukit/posix/src/posixtimespecabsolutetimeout.c @@ -1,5 +1,14 @@ /* * Convert abstime timeout to ticks + */ + +/* + * COPYRIGHT (c) 1989-2007. + * 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.com/license/LICENSE. * * $Id$ */ @@ -30,39 +39,23 @@ int _POSIX_Absolute_timeout_to_ticks( Watchdog_Interval *ticks_out ) { - struct timespec current_time; - struct timespec difference; - - if ( !abstime ) - return EINVAL; + struct timespec current_time; + struct timespec difference; - /* - * Error check the absolute time to timeout - */ -#if 0 - /* they are unsigned so this is impossible */ - if ( abstime->tv_sec < 0 || abstime->tv_nsec < 0 ) + if ( !_Timespec_Is_valid(abstime) ) return EINVAL; -#endif - if ( abstime->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) - return EINVAL; - - (void) clock_gettime( CLOCK_REALTIME, ¤t_time ); + _TOD_Get( ¤t_time ); /* * Make sure the abstime is in the future */ - if ( abstime->tv_sec < current_time.tv_sec ) - return EINVAL; - - if ( (abstime->tv_sec == current_time.tv_sec) && - (abstime->tv_nsec <= current_time.tv_nsec) ) + if ( _Timespec_Less_than( abstime, ¤t_time ) ) return EINVAL; - _POSIX_Timespec_subtract( ¤t_time, abstime, &difference ); + _Timespec_Subtract( ¤t_time, abstime, &difference ); - *ticks_out = _POSIX_Timespec_to_interval( &difference ); + *ticks_out = _Timespec_To_ticks( &difference ); return 0; } |