FreeBSD The Power to Serve

Native Linux timerfd

Contact: Jake Freeland <jfree@FreeBSD.org>

The timerfd facility is a set of Linux-standard system calls that operate on interval timers. These timers are analogous to per-process timers but are represented by a file descriptor, rather than a process. These file descriptors may be passed to other processes, are preserved across fork(2), and may be monitored via kevent(2), poll(2), or select(2).

A timerfd implementation in FreeBSD already exists for Linux compatibility, but this differential revision makes the interface native. The goal behind this change is to ease the FreeBSD porting process for programs that include timerfd.

This specific implementation avoids adding new names to the system call table. Instead, timerfd_create() is wrapped by the specialfd() system call. The timerfd_gettime() and `timerfd_settime() calls are wrapped ioctl() s.

Developers that wish to support FreeBSD should avoid using timerfd. The kqueue() EVFILT_TIMER filter is preferred for establishing arbitrary timers.


Last modified on: April 14, 2023 by Lorenzo Salvadore