sd_event_add_time, sd_event_source_get_time, sd_event_source_set_time, sd_event_source_get_time_accuracy, sd_event_source_set_time_accuracy, sd_event_source_get_time_clock — Add a timer event source to an event loop
#include <systemd/sd-bus.h>
int sd_event_add_time( | sd_event *event, |
sd_event_source **source, | |
clockid_t clock, | |
uint64_t usec, | |
uint64_t accuracy, | |
sd_event_time_handler_t handler, | |
void *userdata) ; |
typedef int (*sd_event_time_handler_t)( | sd_event_source *s, |
uint64_t usec, | |
void *userdata) ; |
int sd_event_source_get_time( | sd_event_source *source, |
usec_t *usec) ; |
int sd_event_source_set_time( | sd_event_source *source, |
usec_t usec) ; |
int sd_event_source_get_time_accuracy( | sd_event_source *source, |
usec_t *usec) ; |
int sd_event_source_set_time_accuracy( | sd_event_source *source, |
usec_t usec) ; |
int sd_event_source_get_time_clock( | sd_event_source *source, |
clockid_t *clock) ; |
sd_event_add_time()
adds a new timer
event source to an event loop object. The event loop is specified
in event
, the event source is returned in
the source
parameter. The
clock
parameter takes a clock identifier,
one of CLOCK_REALTIME
,
CLOCK_MONOTONIC
and
CLOCK_BOOTTIME_ALARM
. See
timerfd_create(2)
for details regarding the various types of clocks. The
usec
parameter takes a time value in
microseconds, relative to the clock's epoch specifying when the
timer shall elapse the earliest. The
accuracy
parameter takes an additional
accuracy value in microseconds specifying a time the timer event
may be delayed. Specify 0 for selecting the default accuracy
(250ms). Specify 1 for most accurate timers. Consider specifying
60000000 or larger (1h) for long-running events that may be
delayed substantially. Picking higher accuracy values allows the
system to coalesce timer events more aggressively, thus improving
power efficiency. The handler
shall
reference a function to call when the timer elapses. The handler
function will be passed the userdata
pointer, which may be chosen freely by the caller. The handler is
also passed the configured time it was triggered, however it might
actually have been called at a slightly later time, subject to the
specified accuracy value, the kernel timer slack (see
prctl(2))
and additional scheduling latencies.
By default, the timer will elapse once
(SD_EVENT_ONESHOT
), but this may be changed
with
sd_event_source_set_enabled(3).
If the handler function returns a negative error code, it will be
disabled after the invocation, even if
SD_EVENT_ON
mode is set.
sd_event_source_get_time()
retrieves
the configured time value of a timer event source created
previously with sd_event_add_time()
. It takes
the event source object and a pointer to a variable to store the
time in microseconds in.
sd_event_source_set_time()
changes the
configured time value of a timer event source created previously
with sd_event_add_time()
. It takes the event
source object and a time relative to the selected clock's
epoch, in microseconds.
sd_event_source_get_time_accuracy()
retrieves the configured accuracy value of a timer event source
created previously with sd_event_add_time()
. It
takes the event source object and a pointer to a variable to store
the accuracy in microseconds in.
sd_event_source_set_time_accuracy()
changes the configured accuracy of a timer event source created
previously with sd_event_add_time()
. It takes
the event source object and an accuracy, in microseconds.
sd_event_source_get_time_clock()
retrieves the configured clock of a timer event source created
previously with sd_event_add_time()
. It takes
the event source object and a pointer to a variable to store the
clock identifier in.
On success, these functions return 0 or a positive integer. On failure, they return a negative errno-style error code.
sd_event_add_time()
and the other functions
described here are available as a shared library, which can be
compiled and linked to with the
libsystemd
pkg-config(1)
file.