46 virtual void startns(
long nanosecs, cppTimerType_t t = PERIODIC) {
47 if (uthread.joinable()) uthread.join();
51 throw(
"Could not start timer");
56 its.it_value.tv_sec = nanosecs / 1000000000;
57 its.it_value.tv_nsec = nanosecs % 1000000000;
58 its.it_interval.tv_sec = nanosecs / 1000000000;
59 its.it_interval.tv_nsec = nanosecs % 1000000000;
63 its.it_value.tv_sec = nanosecs / 1000000000;
64 its.it_value.tv_nsec = nanosecs % 1000000000;
65 its.it_interval.tv_sec = 0;
66 its.it_interval.tv_nsec = 0;
69 if (timerfd_settime(fd, 0, &its, NULL) == -1)
70 throw(
"Could not start timer");
71 uthread = std::thread(&CppTimer::worker,
this);
83 virtual void startms(
long millisecs, cppTimerType_t t = PERIODIC) {
84 if (uthread.joinable()) uthread.join();
88 throw(
"Could not start timer");
93 its.it_value.tv_sec = millisecs / 1000;
94 its.it_value.tv_nsec = (millisecs % 1000) * 1000000;
95 its.it_interval.tv_sec = millisecs / 1000;
96 its.it_interval.tv_nsec = (millisecs % 1000) * 1000000;
100 its.it_value.tv_sec = millisecs / 1000;
101 its.it_value.tv_nsec = (millisecs % 1000) * 1000000;
102 its.it_interval.tv_sec = 0;
103 its.it_interval.tv_nsec = 0;
106 if (timerfd_settime(fd, 0, &its, NULL) == -1)
107 throw(
"Could not start timer");
108 uthread = std::thread(&CppTimer::worker,
this);
159 timerfd_settime(fd, 0, &itsnew, &its);