diff options
Diffstat (limited to 'ace/Timer/Profile_Timer.i')
-rw-r--r-- | ace/Timer/Profile_Timer.i | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/ace/Timer/Profile_Timer.i b/ace/Timer/Profile_Timer.i new file mode 100644 index 00000000000..e77af9b1686 --- /dev/null +++ b/ace/Timer/Profile_Timer.i @@ -0,0 +1,104 @@ +/* -*- C++ -*- */ +// $Id$ + +#if (defined (ACE_HAS_PRUSAGE_T) || defined (ACE_HAS_GETRUSAGE)) && !defined (ACE_WIN32) + +# if defined (ACE_HAS_PRUSAGE_T) +ACE_INLINE int +ACE_Profile_Timer::start (void) +{ + ACE_TRACE ("ACE_Profile_Timer::start"); + return ACE_OS::ioctl (this->proc_handle_, + PIOCUSAGE, + &this->begin_usage_); +} + +ACE_INLINE int +ACE_Profile_Timer::stop (void) +{ + ACE_TRACE ("ACE_Profile_Timer::stop"); + this->last_usage_ = this->end_usage_; + return ACE_OS::ioctl (this->proc_handle_, + PIOCUSAGE, + &this->end_usage_); +} +# elif defined (ACE_HAS_GETRUSAGE) +ACE_INLINE int +ACE_Profile_Timer::start (void) +{ + ACE_TRACE ("ACE_Profile_Timer::start"); + this->begin_time_ = ACE_OS::gettimeofday (); + ACE_OS::getrusage (RUSAGE_SELF, + &this->begin_usage_); + return 0; +} + +ACE_INLINE int +ACE_Profile_Timer::stop (void) +{ + ACE_TRACE ("ACE_Profile_Timer::stop"); + this->last_time_ = this->end_time_; + this->end_time_ = ACE_OS::gettimeofday (); + this->last_usage_ = this->end_usage_; + ACE_OS::getrusage (RUSAGE_SELF, + &this->end_usage_); + return 0; +} + +# endif /* ACE_HAS_PRUSAGE_T */ + +#elif defined (ACE_WIN32) + +ACE_INLINE +ACE_Profile_Timer::~ACE_Profile_Timer (void) +{ +} + +ACE_INLINE int +ACE_Profile_Timer::start (void) +{ + ACE_TRACE ("ACE_Profile_Timer::start"); +# if defined (ACE_HAS_GETRUSAGE) + ACE_OS::getrusage (RUSAGE_SELF, + &this->begin_usage_); +# endif /* ACE_HAS_GETRUSAGE */ + this->timer_.start (); + return 0; +} + +ACE_INLINE int +ACE_Profile_Timer::stop (void) +{ + ACE_TRACE ("ACE_Profile_Timer::stop"); + this->timer_.stop (); +# if defined (ACE_HAS_GETRUSAGE) + this->last_usage_ = this->end_usage_; + ACE_OS::getrusage (RUSAGE_SELF, &this->end_usage_); +# endif /* ACE_HAS_GETRUSAGE */ + return 0; +} + +#else + +ACE_INLINE int +ACE_Profile_Timer::start (void) +{ + ACE_TRACE ("ACE_Profile_Timer::start"); + this->timer_.start (); + return 0; +} + +ACE_INLINE int +ACE_Profile_Timer::stop (void) +{ + ACE_TRACE ("ACE_Profile_Timer::stop"); + this->timer_.stop (); + return 0; +} + +ACE_INLINE +ACE_Profile_Timer::~ACE_Profile_Timer (void) +{ +} + +#endif /* defined (ACE_HAS_PRUSAGE_T) || defined (ACE_HAS_GETRUSAGE) */ |