diff options
author | levine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1997-07-01 19:46:20 +0000 |
---|---|---|
committer | levine <levine@ae88bc3d-4319-0410-8dbf-d08b4c9d3795> | 1997-07-01 19:46:20 +0000 |
commit | 7c2b5d9f2f265eb0e0256c2f788dd2b367160985 (patch) | |
tree | 444e0e17a2c228800e8b5d02049e1907441bbcb8 /ace/High_Res_Timer.i | |
parent | 3051c8de862cd0f18f4d97cc95bd58930144a18c (diff) | |
download | ATCD-7c2b5d9f2f265eb0e0256c2f788dd2b367160985.tar.gz |
(gettime): use gettime () static function to wrap all calls to ACE_OS::gethrtime (). On ACE_WIN32, if the global scale factor has not been set, then use ACE_OS::gettimeofday () instead of ACE_OS::gethrtime (), because gettimeofday doesn't need the scale factor
Diffstat (limited to 'ace/High_Res_Timer.i')
-rw-r--r-- | ace/High_Res_Timer.i | 82 |
1 files changed, 53 insertions, 29 deletions
diff --git a/ace/High_Res_Timer.i b/ace/High_Res_Timer.i index 59f305d2e09..580ceab7d04 100644 --- a/ace/High_Res_Timer.i +++ b/ace/High_Res_Timer.i @@ -3,6 +3,55 @@ // High_Res_Timer.i +ACE_INLINE void +ACE_High_Res_Timer::hrtime_to_tv (ACE_Time_Value &tv, + ACE_hrtime_t hrt) +{ + // The following are based on the units of global_scale_factor_ + // being 1/microsecond. Therefore, dividing by it converts + // clock ticks to microseconds. + tv.sec ((long) (hrt / global_scale_factor_) / 1000000); + tv.usec ((long) (hrt / global_scale_factor_) % 1000000); +} + + +ACE_INLINE ACE_Time_Value +ACE_High_Res_Timer::gettimeofday (void) +{ +#if defined (ACE_WIN32) + // If the global_scale_factor_ == 1 and we're on an Intel platform, + // then a scale factor is needed by the platform gethrtime. Since + // one has not been set, just return ACE_OS::gettimeofday. + if (ACE_High_Res_Timer::global_scale_factor_ == 1) + return ACE_OS::gettimeofday (); +#endif /* ACE_WIN32 */ + + ACE_Time_Value tv; + ACE_High_Res_Timer::hrtime_to_tv (tv, + ACE_OS::gethrtime ()); + return tv; +} + + +ACE_INLINE ACE_hrtime_t +ACE_High_Res_Timer::gettime (void) +{ +#if defined (ACE_WIN32) + // If the global_scale_factor_ == 1 and we're on an Intel platform, + // then a scale factor is needed by the platform gethrtime. Since + // one has not been set, just return ACE_OS::gettimeofday. + if (ACE_High_Res_Timer::global_scale_factor_ == 1) + { + ACE_Time_Value tv = ACE_OS::gettimeofday (); + // Return the time in microseconds because the global_scale_factor_ + // is 1. + return tv.sec () * 1000000 + tv.usec (); + } +#endif /* ACE_WIN32 */ + + return ACE_OS::gethrtime (); +} + ACE_INLINE ACE_High_Res_Timer::ACE_High_Res_Timer (void) { @@ -15,28 +64,28 @@ ACE_INLINE void ACE_High_Res_Timer::start (void) { ACE_TRACE ("ACE_High_Res_Timer::start"); - this->start_ = ACE_OS::gethrtime (); + this->start_ = ACE_High_Res_Timer::gettime (); } ACE_INLINE void ACE_High_Res_Timer::stop (void) { ACE_TRACE ("ACE_High_Res_Timer::stop"); - this->end_ = ACE_OS::gethrtime (); + this->end_ = ACE_High_Res_Timer::gettime (); } ACE_INLINE void ACE_High_Res_Timer::start_incr (void) { ACE_TRACE ("ACE_High_Res_Timer::start_incr"); - this->start_incr_ = ACE_OS::gethrtime (); + this->start_incr_ = ACE_High_Res_Timer::gettime (); } ACE_INLINE void ACE_High_Res_Timer::stop_incr (void) { ACE_TRACE ("ACE_High_Res_Timer::stop_incr"); - this->total_ += ACE_OS::gethrtime () - this->start_incr_; + this->total_ += ACE_High_Res_Timer::gettime () - this->start_incr_; } ACE_INLINE void @@ -50,28 +99,3 @@ ACE_High_Res_Timer::global_scale_factor (u_long gsf) { global_scale_factor_ = gsf; } - -ACE_INLINE void -ACE_High_Res_Timer::hrtime_to_tv (ACE_Time_Value &tv, - ACE_hrtime_t hrt) -{ - tv.sec ((long) (hrt / global_scale_factor_) / 1000000); - tv.usec ((long) (hrt / global_scale_factor_) % 1000000); -} - -ACE_INLINE ACE_Time_Value -ACE_High_Res_Timer::gettimeofday (void) -{ -#if defined (ACE_WIN32) - // If the global_scale_factor_ == 1 and we're on an Intel platform, - // then a scale factor is needed by the platform gethrtime. Since - // one has not been set, just return ACE_OS::gettimeofday. - if (ACE_High_Res_Timer::global_scale_factor_ == 1) - return ACE_OS::gettimeofday (); -#endif /* ACE_WIN32 */ - - ACE_Time_Value tv; - ACE_High_Res_Timer::hrtime_to_tv (tv, - ACE_OS::gethrtime ()); - return tv; -} |