diff --git a/common/src/timestamp.cpp b/common/src/timestamp.cpp index a553322..e9b9a55 100644 --- a/common/src/timestamp.cpp +++ b/common/src/timestamp.cpp @@ -10,7 +10,7 @@ struct timestamp { - struct timespec timestamp; + uint64_t timestamp_ms; uint64_t update_interval_ms; }; @@ -21,7 +21,6 @@ struct timestamp *timestamp_new(uint64_t update_interval_ms) timestamp_update(ts); LOG_DEBUG("%s: TIMESTAMP->update_interval_ms : %lu", LOG_TAG_TIMESTAMP, timestamp_update_interval_ms(ts)); - LOG_DEBUG("%s: TIMESTAMP->current_sec : %lu", LOG_TAG_TIMESTAMP, timestamp_get_sec(ts)); LOG_DEBUG("%s: TIMESTAMP->current_msec : %lu", LOG_TAG_TIMESTAMP, timestamp_get_msec(ts)); return ts; @@ -40,8 +39,9 @@ void timestamp_update(struct timestamp *ts) { struct timespec temp; clock_gettime(CLOCK_MONOTONIC, &temp); - ATOMIC_SET(&(ts->timestamp.tv_sec), temp.tv_sec); - ATOMIC_SET(&(ts->timestamp.tv_nsec), temp.tv_nsec); + uint64_t current_timestamp_ms = temp.tv_sec * 1000 + temp.tv_nsec / 1000000; + + __atomic_store_n(&ts->timestamp_ms, current_timestamp_ms, __ATOMIC_RELEASE); } uint64_t timestamp_update_interval_ms(struct timestamp *ts) @@ -49,17 +49,7 @@ uint64_t timestamp_update_interval_ms(struct timestamp *ts) return ts->update_interval_ms; } -uint64_t timestamp_get_sec(struct timestamp *ts) -{ - uint64_t sec = ATOMIC_READ(&(ts->timestamp.tv_sec)); - - return sec; -} - uint64_t timestamp_get_msec(struct timestamp *ts) { - uint64_t sec = ATOMIC_READ(&(ts->timestamp.tv_sec)); - uint64_t nsec = ATOMIC_READ(&(ts->timestamp.tv_nsec)); - - return sec * 1000 + nsec / 1000000; + return __atomic_load_n(&ts->timestamp_ms, __ATOMIC_ACQUIRE); }