16 #include <sys/timerfd.h> 25 struct itimerspec itval;
28 fd = timerfd_create (CLOCK_MONOTONIC, 0);
29 const FwSizeType interval_secs = interval/1000;
30 FW_ASSERT(static_cast<FwSizeType>(std::numeric_limits<I32>::max()) >= interval_secs,
31 static_cast<FwAssertArgType>(interval));
32 itval.it_interval.tv_sec =
static_cast<I32
>(interval_secs);
33 itval.it_interval.tv_nsec =
static_cast<I32
>((interval*1000000)%1000000000);
34 itval.it_value.tv_sec =
static_cast<I32
>(interval_secs);
35 itval.it_value.tv_nsec =
static_cast<I32
>((interval*1000000)%1000000000);
37 timerfd_settime (fd, 0, &itval,
nullptr);
40 unsigned long long missed;
41 int ret =
static_cast<int>(read (fd, &missed,
sizeof (missed)));
46 bool quit = this->m_quit;
49 itval.it_interval.tv_sec = 0;
50 itval.it_interval.tv_nsec = 0;
51 itval.it_value.tv_sec = 0;
52 itval.it_value.tv_nsec = 0;
54 timerfd_settime (fd, 0, &itval,
nullptr);
57 this->m_rawTime.
now();
PlatformSizeType FwSizeType
void unLock()
unlock the mutex and assert success
static void log(const char *format,...)
log a formated string with supplied arguments
Status now() override
Get the current time.
void CycleOut_out(FwIndexType portNum, Os::RawTime &cycleStart)
Invoke output port CycleOut.
void startTimer(FwSizeType interval)
Start timer.
RateGroupDivider component implementation.
void lock()
lock the mutex and assert success