7#include <sys/timerfd.h>
9#include "dawn/io/timestamp.hxx"
13CIOTimerfd::~CIOTimerfd()
17#ifdef CONFIG_DAWN_IO_NOTIFY
26int CIOTimerfd::timfd_init()
28#ifdef CONFIG_DAWN_IO_NOTIFY
33 fd = timerfd_create(CLOCK_MONOTONIC, 0);
36 DAWNERR(
"timerfd_create failed errno=%d\n", errno);
44void CIOTimerfd::timfd_interval(uint32_t data)
49void CIOTimerfd::timfd_ack()
51#ifdef CONFIG_DAWN_IO_NOTIFY
55 read(fd, &tdret,
sizeof(timerfd_t));
60int CIOTimerfd::timfd_fd()
const
62#ifdef CONFIG_DAWN_IO_NOTIFY
69int CIOTimerfd::timfd_start()
71#ifdef CONFIG_DAWN_IO_NOTIFY
74 struct itimerspec tms;
84 tms.it_value.tv_sec = (interval / 1000000);
85 tms.it_value.tv_nsec =
static_cast<long>(interval % 1000000) * 1000;
86 tms.it_interval.tv_sec = (interval / 1000000);
87 tms.it_interval.tv_nsec =
static_cast<long>(interval % 1000000) * 1000;
89 ret = timerfd_settime(fd, 0, &tms, NULL);
92 DAWNERR(
"timerfd_settime for interval=%" PRIu32
" failed errno=%d\n", interval, errno);
102int CIOTimerfd::timfd_stop()
104#ifdef CONFIG_DAWN_IO_NOTIFY
107 struct itimerspec tms;
110 tms.it_value.tv_sec = 0;
111 tms.it_value.tv_nsec = 0;
112 tms.it_interval.tv_sec = 0;
113 tms.it_interval.tv_nsec = 0;
115 ret = timerfd_settime(fd, 0, &tms, NULL);
118 DAWNERR(
"timerfd_settime stop failed errno=%d\n", errno);
Out-of-tree user-extension hooks for Dawn.