From mboxrd@z Thu Jan 1 00:00:00 1970 From: nils.carlson@ludd.ltu.se (Nils Carlson) Date: Tue, 25 May 2010 21:38:20 +0200 Subject: [ltt-dev] PATCH [0/1]: Replace gettimeofday with clock_gettime In-Reply-To: <4BFBDF38.7090200@polymtl.ca> References: <4BFBDF38.7090200@polymtl.ca> Message-ID: Comments below, On May 25, 2010, at 4:31 PM, Pierre-Marc Fournier wrote: > Thanks, comments below. > > > On 05/24/2010 10:54 AM, Nils Carlson wrote: >> This patch replaces gettimeofday with clock_gettime(CLOCK_MONOTONIC,) >> >> Signed-off-by: Nils Carlson >> >> diff --git a/include/ust/clock.h b/include/ust/clock.h >> index d4b6a9d..bc26d26 100644 >> --- a/include/ust/clock.h >> +++ b/include/ust/clock.h >> @@ -18,6 +18,7 @@ >> #ifndef UST_CLOCK_H >> #define UST_CLOCK_H >> >> +#include >> #include >> #include >> >> @@ -25,7 +26,7 @@ >> >> /* There are two types of clocks that can be used. >> - TSC based clock >> - - gettimeofday() clock >> + - gettimeofday() clock - to guarantee monotonicity use >> clock_gettime >> >> Microbenchmarks on Linux 2.6.30 on Core2 Duo 3GHz (functions are >> inlined): >> Calls (100000000) to tsc(): 4004035641 cycles or 40 cycles/call >> @@ -41,13 +42,13 @@ >> >> static __inline__ u64 trace_clock_read64(void) >> { >> - struct timeval tv; >> + struct timespec ts; >> u64 retval; >> >> - gettimeofday(&tv, NULL); >> - retval = tv.tv_sec; >> + clock_gettime(CLOCK_MONOTONIC,&ts); >> + retval = ts.tv_sec; >> retval *= 1000000; >> - retval += tv.tv_usec; >> + retval += ts.tv_nsec / 1000; > > Any specific reason for truncating the nanoseconds here? Only to provide the same fidelity as the previous code. I don't know enough about how you use the timer, so I didn't take it upon myself to change the resolution. > >> >> return retval; >> } >> diff --git a/libust/Makefile.am b/libust/Makefile.am >> index 2de5857..e357ad1 100644 >> --- a/libust/Makefile.am >> +++ b/libust/Makefile.am >> @@ -27,6 +27,7 @@ libust_la_LDFLAGS = -no-undefined -version-info >> 0:0:0 >> >> libust_la_LIBADD = \ >> -lpthread \ >> + -lrt \ > > I guess this isn't supposed to be part of the patch? It is. clock_gettime requires the realtime clock library. > >> $(top_builddir)/snprintf/libustsnprintf.la \ >> $(top_builddir)/libustcomm/libustcomm.la >> >> >> >> >> >> _______________________________________________ >> ltt-dev mailing list >> ltt-dev at lists.casi.polymtl.ca >> http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev