Time: Add setTick and getTick functions to the Time class.
authorGabe Black <gblack@eecs.umich.edu>
Thu, 20 Jan 2011 00:22:15 +0000 (16:22 -0800)
committerGabe Black <gblack@eecs.umich.edu>
Thu, 20 Jan 2011 00:22:15 +0000 (16:22 -0800)
src/base/time.cc
src/base/time.hh

index b9bbb083020621b8dfe0a0375e6003346b37d924..0fab938a4adc6dc494882320a5f47f53d115d03a 100644 (file)
@@ -33,6 +33,7 @@
 
 #include "base/time.hh"
 #include "config/use_posix_clock.hh"
+#include "sim/core.hh"
 
 using namespace std;
 
@@ -48,6 +49,19 @@ Time::_set(bool monotonic)
 #endif
 }
 
+void
+Time::setTick(Tick ticks)
+{
+    uint64_t nsecs = ticks / SimClock::Int::ns;
+    set(nsecs / NSEC_PER_SEC, nsecs % NSEC_PER_SEC);
+}
+
+Tick
+Time::getTick() const
+{
+    return (nsec() + sec() * NSEC_PER_SEC) * SimClock::Int::ns;
+}
+
 string
 Time::date(const string &format) const
 {
index 2c54f2675476523619b7d80122f4397599da1905..4fc3dd3ef41f1524bcbb42e12c6e21fc20e6ffcb 100644 (file)
@@ -42,6 +42,8 @@
 #include <iosfwd>
 #include <string>
 
+#include "base/types.hh"
+
 class Time
 {
   protected:
@@ -99,6 +101,18 @@ class Time
      */
     void set(time_t _sec, long _nsec) { sec(_sec); nsec(_nsec); }
 
+    /**
+     * Set the current time from a value measured in Ticks
+     * @param ticks Number of ticks to convert into a time.
+     */
+    void setTick(Tick ticks);
+
+    /**
+     * Get the current time from a value measured in Ticks
+     * @return Time value measured in Ticks.
+     */
+    Tick getTick() const;
+
     const Time &
     operator=(const Time &other)
     {