diff --git a/src/main/util/time.c b/src/main/util/time.c index acee0f5..daf71e8 100644 --- a/src/main/util/time.c +++ b/src/main/util/time.c @@ -66,4 +66,33 @@ void util_time_get_current_time(struct util_time_timestamp* timestamp) timestamp->month = tm->tm_mon + 1; // Years since 1900 timestamp->year = tm->tm_year + 1900; +} + +uint64_t util_time_now_ns() +{ + struct timespec ts; + + clock_gettime(0, &ts); + + return ts.tv_sec * 1000000000 + ts.tv_nsec; +} + +uint64_t util_time_delta_ns(uint64_t prev_ns, uint64_t now_ns) +{ + return now_ns - prev_ns; +} + +double util_time_delta_us(uint64_t prev_ns, uint64_t now_ns) +{ + return util_time_delta_ns(prev_ns, now_ns) / 1000.0; +} + +double util_time_delta_ms(uint64_t prev_ns, uint64_t now_ns) +{ + return util_time_delta_ns(prev_ns, now_ns) / 1000.0 / 1000.0; +} + +double util_time_delta_sec(uint64_t prev_ns, uint64_t now_ns) +{ + return util_time_delta_ns(prev_ns, now_ns) / 1000.0 / 1000.0 / 1000.0; } \ No newline at end of file diff --git a/src/main/util/time.h b/src/main/util/time.h index 80f106b..9d66147 100644 --- a/src/main/util/time.h +++ b/src/main/util/time.h @@ -23,4 +23,14 @@ void util_time_sleep_sec(uint64_t time_sec); void util_time_get_current_time(struct util_time_timestamp* timestamp); +uint64_t util_time_now_ns(); + +uint64_t util_time_delta_ns(); + +double util_time_delta_us(uint64_t prev_ns, uint64_t now_ns); + +double util_time_delta_ms(uint64_t prev_ns, uint64_t now_ns); + +double util_time_delta_sec(uint64_t prev_ns, uint64_t now_ns); + #endif //UTIL_TIME_H