From 5b748a177d0a4820f7409d3dcdb29a89c62bf802 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 3 Jun 1996 17:32:19 +0000 Subject: renamed _POSIX_Time_Spec_to_interval to _POSIX_Timespec_to_interval --- cpukit/posix/include/rtems/posix/time.h | 16 ++++++++++- cpukit/posix/src/cond.c | 2 +- cpukit/posix/src/intr.c | 2 +- cpukit/posix/src/mqueue.c | 4 +-- cpukit/posix/src/mutex.c | 2 +- cpukit/posix/src/semaphore.c | 2 +- cpukit/posix/src/time.c | 49 +++++++++++++++++++++++---------- 7 files changed, 56 insertions(+), 21 deletions(-) (limited to 'cpukit/posix') diff --git a/cpukit/posix/include/rtems/posix/time.h b/cpukit/posix/include/rtems/posix/time.h index eb48d2af5d..7b1f731428 100644 --- a/cpukit/posix/include/rtems/posix/time.h +++ b/cpukit/posix/include/rtems/posix/time.h @@ -18,8 +18,22 @@ (((1987 - 1970 + 1) * TOD_SECONDS_PER_NON_LEAP_YEAR) + \ (4 * TOD_SECONDS_PER_DAY)) -Watchdog_Interval _POSIX_Time_Spec_to_interval( +/* + * _POSIX_Timespec_to_interval + */ + +Watchdog_Interval _POSIX_Timespec_to_interval( const struct timespec *time ); +/*PAGE + * + * _POSIX_Interval_to_timespec + */ + +void _POSIX_Interval_to_timespec( + Watchdog_Interval ticks, + struct timespec *time +); + #endif diff --git a/cpukit/posix/src/cond.c b/cpukit/posix/src/cond.c index 5dd5493808..68ef709be1 100644 --- a/cpukit/posix/src/cond.c +++ b/cpukit/posix/src/cond.c @@ -427,6 +427,6 @@ int pthread_cond_timedwait( return _POSIX_Condition_variables_Wait_support( cond, mutex, - _POSIX_Time_Spec_to_interval( abstime ) + _POSIX_Timespec_to_interval( abstime ) ); } diff --git a/cpukit/posix/src/intr.c b/cpukit/posix/src/intr.c index d82af2e266..5d41a5fe52 100644 --- a/cpukit/posix/src/intr.c +++ b/cpukit/posix/src/intr.c @@ -270,7 +270,7 @@ int intr_timed_wait( Watchdog_Interval ticks; POSIX_API_Thread_Support_Control *thread_support; - ticks = _POSIX_Time_Spec_to_interval( timeout ); + ticks = _POSIX_Timespec_to_interval( timeout ); thread_support = _Thread_Executing->API_Extensions[ THREAD_API_POSIX ]; diff --git a/cpukit/posix/src/mqueue.c b/cpukit/posix/src/mqueue.c index 364d30169e..b489643401 100644 --- a/cpukit/posix/src/mqueue.c +++ b/cpukit/posix/src/mqueue.c @@ -439,7 +439,7 @@ int mq_timedsend( msg_ptr, msg_len, msg_prio, - _POSIX_Time_Spec_to_interval( timeout ) + _POSIX_Timespec_to_interval( timeout ) ); } @@ -537,7 +537,7 @@ int mq_timedreceive( /* XXX: should this be ssize_t */ msg_ptr, msg_len, msg_prio, - _POSIX_Time_Spec_to_interval( timeout ) + _POSIX_Timespec_to_interval( timeout ) ); } diff --git a/cpukit/posix/src/mutex.c b/cpukit/posix/src/mutex.c index a3b81da52d..463d897ba6 100644 --- a/cpukit/posix/src/mutex.c +++ b/cpukit/posix/src/mutex.c @@ -456,7 +456,7 @@ int pthread_mutex_timedlock( return _POSIX_Mutex_Lock_support( mutex, TRUE, - _POSIX_Time_Spec_to_interval( timeout ) + _POSIX_Timespec_to_interval( timeout ) ); } diff --git a/cpukit/posix/src/semaphore.c b/cpukit/posix/src/semaphore.c index 488e42b8e7..628e094716 100644 --- a/cpukit/posix/src/semaphore.c +++ b/cpukit/posix/src/semaphore.c @@ -496,7 +496,7 @@ int sem_timedwait( return _POSIX_Semaphore_Wait_support( sem, TRUE, - _POSIX_Time_Spec_to_interval( timeout ) + _POSIX_Timespec_to_interval( timeout ) ); } diff --git a/cpukit/posix/src/time.c b/cpukit/posix/src/time.c index 9284bfac44..74e78133f3 100644 --- a/cpukit/posix/src/time.c +++ b/cpukit/posix/src/time.c @@ -13,11 +13,12 @@ #include -/* - * _POSIX_Time_Spec_to_interval +/*PAGE + * + * _POSIX_Timespec_to_interval */ -Watchdog_Interval _POSIX_Time_Spec_to_interval( +Watchdog_Interval _POSIX_Timespec_to_interval( const struct timespec *time ) { @@ -32,7 +33,27 @@ Watchdog_Interval _POSIX_Time_Spec_to_interval( return ticks; } -/* +/*PAGE + * + * _POSIX_Interval_to_timespec + */ + +void _POSIX_Interval_to_timespec( + Watchdog_Interval ticks, + struct timespec *time +) +{ + unsigned32 usecs; + + usecs = ticks * _TOD_Microseconds_per_tick; + + time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND; + time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) * + TOD_NANOSECONDS_PER_MICROSECOND; +} + +/*PAGE + * * 4.5.1 Get System Time, P1003.1b-1993, p. 91 */ @@ -203,12 +224,8 @@ int clock_getres( case CLOCK_REALTIME: case CLOCK_PROCESS_CPUTIME: case CLOCK_THREAD_CPUTIME: - if ( res ) { - res->tv_sec = _TOD_Microseconds_per_tick / TOD_MICROSECONDS_PER_SECOND; - res->tv_nsec = - (_TOD_Microseconds_per_tick % TOD_MICROSECONDS_PER_SECOND) * - TOD_NANOSECONDS_PER_MICROSECOND; - } + if ( res ) + _POSIX_Interval_to_timespec( _TOD_Microseconds_per_tick, res ); break; default: @@ -248,9 +265,7 @@ int nanosleep( /* XXX this is interruptible by a posix signal */ -/* XXX rmtp is the time remaining on the timer -- we do not support this */ - - ticks = _POSIX_Time_Spec_to_interval( rqtp ); + ticks = _POSIX_Timespec_to_interval( rqtp ); _Thread_Disable_dispatch(); _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME ); @@ -263,8 +278,14 @@ int nanosleep( _Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks ); _Thread_Enable_dispatch(); + /* calculate time remaining */ + if ( rmtp ) { - /* XXX calculate time remaining */ + + _POSIX_Interval_to_timespec( + _Thread_Executing->Timer.stop_time - _Thread_Executing->Timer.start_time, + rmtp + ); } return 0; /* XXX should account for signal */ -- cgit v1.2.3