From c16bcc009b3bec9f653cefbe5247ef9d74352833 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Mon, 8 Dec 2008 19:41:31 +0000 Subject: 2008-12-08 Joel Sherrill * libcsupport/src/__times.c, libmisc/cpuuse/cpuusagereport.c, libmisc/cpuuse/cpuusagereset.c, posix/src/clockgettime.c, posix/src/pthread.c, posix/src/timersettime.c, rtems/include/rtems/rtems/ratemon.h, rtems/src/clockgetsecondssinceepoch.c, rtems/src/clockgetuptime.c, rtems/src/ratemongetstatus.c, rtems/src/ratemonperiod.c, rtems/src/ratemonreportstatistics.c, rtems/src/taskwakewhen.c, rtems/src/timerfirewhen.c, rtems/src/timerserver.c, rtems/src/timerserverfirewhen.c, score/Makefile.am, score/preinstall.am, score/include/rtems/score/thread.h, score/include/rtems/score/tod.h, score/src/coretod.c, score/src/coretodget.c, score/src/coretodgetuptime.c, score/src/coretodset.c, score/src/coretodtickle.c, score/src/threaddispatch.c, score/src/threadinitialize.c: Add SuperCore handler Timestamp to provide an opaque class for the representation and manipulation of uptime, time of day, and the difference between two timestamps. By using SuperCore Timestamp, it is clear which methods and APIs really have to be struct timespec and which can be in an optimized native format. * score/include/rtems/score/timestamp.h, score/src/coretodgetuptimetimespec.c: New files. --- cpukit/posix/src/clockgettime.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'cpukit/posix/src/clockgettime.c') diff --git a/cpukit/posix/src/clockgettime.c b/cpukit/posix/src/clockgettime.c index d94bd16f98..8182f8e70f 100644 --- a/cpukit/posix/src/clockgettime.c +++ b/cpukit/posix/src/clockgettime.c @@ -36,22 +36,30 @@ int clock_gettime( if ( !tp ) rtems_set_errno_and_return_minus_one( EINVAL ); - if ( clock_id == CLOCK_REALTIME ) + if ( clock_id == CLOCK_REALTIME ) { _TOD_Get(tp); + return 0; + } #ifdef CLOCK_MONOTONIC - else if ( clock_id == CLOCK_MONOTONIC ) - _TOD_Get_uptime(tp); + if ( clock_id == CLOCK_MONOTONIC ) { + _TOD_Get_uptime_as_timespec( tp ); + return 0; + } #endif + #ifdef _POSIX_CPUTIME - else if ( clock_id == CLOCK_PROCESS_CPUTIME ) - _TOD_Get_uptime(tp); + if ( clock_id == CLOCK_PROCESS_CPUTIME ) { + _TOD_Get_uptime_as_timespec( tp ); + return 0; + } #endif + #ifdef _POSIX_THREAD_CPUTIME - else if ( clock_id == CLOCK_THREAD_CPUTIME ) + if ( clock_id == CLOCK_THREAD_CPUTIME ) rtems_set_errno_and_return_minus_one( ENOSYS ); #endif - else - rtems_set_errno_and_return_minus_one( EINVAL ); + + rtems_set_errno_and_return_minus_one( EINVAL ); return 0; } -- cgit v1.2.3