diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2019-11-25 11:41:20 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2019-11-25 11:41:20 +0000 |
commit | 17968f6e8daa42a66720952e848b9080861bc358 (patch) | |
tree | 6fb6bd802924ca3e9aba2cb051a21eee53579efa /staging_vespalib | |
parent | 2b71095df8a5f027d89407b4142c82930c5d720b (diff) |
Need to use a volatile to ensure compiler will always generate correct code independent of inlining and optimizations.
Diffstat (limited to 'staging_vespalib')
-rw-r--r-- | staging_vespalib/src/vespa/vespalib/util/clock.cpp | 2 | ||||
-rw-r--r-- | staging_vespalib/src/vespa/vespalib/util/clock.h | 6 |
2 files changed, 4 insertions, 4 deletions
diff --git a/staging_vespalib/src/vespa/vespalib/util/clock.cpp b/staging_vespalib/src/vespa/vespalib/util/clock.cpp index 543a475480b..68929d0377c 100644 --- a/staging_vespalib/src/vespa/vespalib/util/clock.cpp +++ b/staging_vespalib/src/vespa/vespalib/util/clock.cpp @@ -25,7 +25,7 @@ Clock::~Clock() void Clock::setTime() const { - _timeNS = fastos::ClockSteady::now(); + _timeNS = (fastos::ClockSteady::now() - fastos::SteadyTimeStamp::ZERO); } void Clock::Run(FastOS_ThreadInterface *thread, void *arguments) diff --git a/staging_vespalib/src/vespa/vespalib/util/clock.h b/staging_vespalib/src/vespa/vespalib/util/clock.h index 43cea258d23..7b0633a2b4f 100644 --- a/staging_vespalib/src/vespa/vespalib/util/clock.h +++ b/staging_vespalib/src/vespa/vespalib/util/clock.h @@ -20,7 +20,7 @@ private: Clock(const Clock &); Clock & operator = (const Clock &); - mutable fastos::SteadyTimeStamp _timeNS; + mutable volatile int64_t _timeNS; int _timePeriodMS; std::mutex _lock; std::condition_variable _cond; @@ -39,9 +39,9 @@ public: if (!_running) { setTime(); } - return _timeNS; + return getTimeNSAssumeRunning(); } - fastos::SteadyTimeStamp getTimeNSAssumeRunning() const { return _timeNS; } + fastos::SteadyTimeStamp getTimeNSAssumeRunning() const { return fastos::SteadyTimeStamp(_timeNS); } void stop(); }; |