13 #include <sys/timerfd.h> 25 struct itimerspec itval;
28 fd = timerfd_create(CLOCK_MONOTONIC, 0);
33 time_t seconds_value =
static_cast<time_t
>(interval.
getSeconds());
36 itval.it_interval.tv_sec =
static_cast<time_t
>(seconds_value);
37 itval.it_interval.tv_nsec =
static_cast<long>(interval.
getUSeconds() * 1000);
38 itval.it_value.tv_sec =
static_cast<time_t
>(seconds_value);
39 itval.it_value.tv_nsec =
static_cast<long>(interval.
getUSeconds() * 1000);
41 const int settimeStatus = timerfd_settime(fd, 0, &itval,
nullptr);
42 if (settimeStatus == -1) {
47 unsigned long long missed;
48 int ret =
static_cast<int>(read(fd, &missed,
sizeof(missed)));
49 if ((-1 == ret) && (errno != EINTR)) {
56 bool quit = this->m_quit;
59 itval.it_interval.tv_sec = 0;
60 itval.it_interval.tv_nsec = 0;
61 itval.it_value.tv_sec = 0;
62 itval.it_value.tv_nsec = 0;
64 (void)timerfd_settime(fd, 0, &itval,
nullptr);
71 this->m_rawTimeErrorLogged =
true;
72 Fw::Logger::log(
"timer raw time error: %d\n", static_cast<I32>(rawTimeStatus));
void startTimer(const Fw::TimeInterval &interval)
Start timer.
Status now() override
Get the current time.
void unLock()
unlock the mutex and assert success
static void log(const char *format,...)
log a formated string with supplied arguments
RateGroupDivider component implementation.
void CycleOut_out(FwIndexType portNum, Os::RawTime &cycleStart) const
Invoke output port CycleOut.
void lock()
lock the mutex and assert success