diff --git a/src/timerfd_manager.cpp b/src/timerfd_manager.cpp index a2c71f83..68deb75e 100644 --- a/src/timerfd_manager.cpp +++ b/src/timerfd_manager.cpp @@ -34,8 +34,8 @@ timerfd_manager_t::~timerfd_manager_t() void timerfd_manager_t::inc_timer(timerfd_timer_t & t) { - t.next.tv_sec += t.millis/1000; - t.next.tv_nsec += (t.millis%1000)*1000000; + t.next.tv_sec += t.micros/1000000; + t.next.tv_nsec += (t.micros%1000000)*1000; if (t.next.tv_nsec > 1000000000) { t.next.tv_sec++; @@ -44,13 +44,18 @@ void timerfd_manager_t::inc_timer(timerfd_timer_t & t) } int timerfd_manager_t::set_timer(uint64_t millis, bool repeat, std::function callback) +{ + return set_timer_us(millis*1000, repeat, callback); +} + +int timerfd_manager_t::set_timer_us(uint64_t micros, bool repeat, std::function callback) { int timer_id = id++; timespec start; clock_gettime(CLOCK_MONOTONIC, &start); timers.push_back({ .id = timer_id, - .millis = millis, + .micros = micros, .start = start, .next = start, .repeat = repeat, diff --git a/src/timerfd_manager.h b/src/timerfd_manager.h index 45442fe7..6bdad07d 100644 --- a/src/timerfd_manager.h +++ b/src/timerfd_manager.h @@ -10,7 +10,7 @@ struct timerfd_timer_t { int id; - uint64_t millis; + uint64_t micros; timespec start, next; bool repeat; std::function callback; @@ -34,5 +34,6 @@ public: timerfd_manager_t(std::function)> set_fd_handler); ~timerfd_manager_t(); int set_timer(uint64_t millis, bool repeat, std::function callback); + int set_timer_us(uint64_t micros, bool repeat, std::function callback); void clear_timer(int timer_id); };