diff options
author | Harald Welte <laforge@gnumonks.org> | 2017-12-03 16:13:39 +0100 |
---|---|---|
committer | Harald Welte <laforge@gnumonks.org> | 2018-05-10 10:33:54 +0200 |
commit | ea4d8939af7204bc6ca76144354ef4d70189eaa3 (patch) | |
tree | 9e9259f5a73620508ac4e2dedcff7e6cf35482fc /include/osmocom/core | |
parent | b82a407a4924f51844c01e1627c3bb01db210c0f (diff) |
Add osmo_timerfd_* functions for osmo_fd-wrapped timerfd
Linux offers file descriptor based periodic (interval) timers,
which can achieve a higher precision than our userspace based
timers and which can be slave'd to CLOCK_MONOTINIC or other clock
sources. Let's add some code for osmo_fd wrapped versions that
integrate well with our select() abstraction.
The code has been used in osmo-bts-trx since June 2017 (change-id
I51b19adde14ebb7ef3bb863d45e06243c323e22e), and I'm just renaming
and moving it to libosmocore here. After a merge, the osmo-bts
implementations can be removed in favor if this one.
Change-Id: Ibeffba7c997252c003723bcd5d14122c4ded2fe7
Diffstat (limited to 'include/osmocom/core')
-rw-r--r-- | include/osmocom/core/select.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/include/osmocom/core/select.h b/include/osmocom/core/select.h index b6fed3c7..1ba6b832 100644 --- a/include/osmocom/core/select.h +++ b/include/osmocom/core/select.h @@ -6,6 +6,7 @@ #include <osmocom/core/linuxlist.h> #include <stdbool.h> +#include <time.h> /*! \defgroup select Select loop abstraction * @{ @@ -54,4 +55,10 @@ struct osmo_fd *osmo_fd_get_by_fd(int fd); int osmo_fd_fill_fds(void *readset, void *writeset, void *exceptset); int osmo_fd_disp_fds(void *readset, void *writeset, void *exceptset); +/* timerfd integration */ +int osmo_timerfd_disable(struct osmo_fd *ofd); +int osmo_timerfd_schedule(struct osmo_fd *ofd, const struct timespec *first, + const struct timespec *interval); +int osmo_timerfd_setup(struct osmo_fd *ofd, int (*cb)(struct osmo_fd *, unsigned int), void *data); + /*! @} */ |