From e553c3ec56b3f0cc860bba19dd04415ac171476d Mon Sep 17 00:00:00 2001 From: Jeff Hill Date: Fri, 1 Dec 2006 00:17:58 +0000 Subject: [PATCH] added comment --- src/libCom/osi/epicsTime.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/libCom/osi/epicsTime.cpp b/src/libCom/osi/epicsTime.cpp index 4f7cf07b1..2913a8cce 100644 --- a/src/libCom/osi/epicsTime.cpp +++ b/src/libCom/osi/epicsTime.cpp @@ -350,8 +350,16 @@ epicsTime::operator struct timeval () const time_t_wrapper ansiTimeTicks; ansiTimeTicks = *this; + // On Posix systems timeval :: tv_sec is a time_t so this can be + // a direct assignement. On other systems I dont know that we can + // guarantee that time_t and timeval :: tv_sec will have the + // same epoch or have the same scaling factor to discrete seconds. + // For example, on windows time_t changed recently to a 64 bit + // quantity but timeval is still a long. That can cause problems + // on 32 bit systems. So technically, we should have an os + // dependent conversion between time_t and timeval :: tv_sec? ts.tv_sec = ansiTimeTicks.ts; - ts.tv_usec = static_cast (this->nSec / nSecPerUSec); + ts.tv_usec = static_cast < long > ( this->nSec / nSecPerUSec ); return ts; } @@ -361,7 +369,14 @@ epicsTime::operator struct timeval () const epicsTime::epicsTime (const struct timeval &ts) { time_t_wrapper ansiTimeTicks; - + // On Posix systems timeval :: tv_sec is a time_t so this can be + // a direct assignement. On other systems I dont know that we can + // guarantee that time_t and timeval :: tv_sec will have the + // same epoch or have the same scaling factor to discrete seconds. + // For example, on windows time_t changed recently to a 64 bit + // quantity but timeval is still a long. That can cause problems + // on 32 bit systems. So technically, we should have an os + // dependent conversion between time_t and timeval :: tv_sec? ansiTimeTicks.ts = ts.tv_sec; *this = epicsTime (ansiTimeTicks); this->addNanoSec (ts.tv_usec * nSecPerUSec);