sd_event_run, sd_event_loop — Run libsystemd event loop
#include <systemd/sd-event.h>
int sd_event_run( | sd_event *event, |
uint64_t timeout); |
int sd_event_loop( | sd_event *event); |
sd_event_run() can be used to run one
iteration of the event loop of libsystemd. This function waits
until an event to process is available and dispatches a handler
for it. Parameter timeout specifices the
maximum time (in microseconds) to wait. (uint64_t)
-1 may be used to specify an infinite timeout.
sd_event_loop runs
sd_event_wait in a loop with a timeout of
infinity. This makes it suitable for the main event loop of a
program.
The event loop object event is
created with
sd_event_new.
Events to wait for and their handlers can be registered with
sd_event_add_time,
sd_event_add_child,
sd_event_add_signal,
sd_event_add_defer,
sd_event_add_exit,
and
sd_event_add_post.
For more fine-grained control,
sd_event_prepare,
sd_event_wait, and
sd_event_dispatch may be used. Along with
sd_event_get_fd, those functions make it
possible to integrate the libsystemd loop inside of another event
loop.
On success, these functions return 0 or a positive integer.
On failure, they return a negative errno-style error code.
sd_event_run returns 0 if the event loop is
finished, and a positive value if it can be continued.
Returned errors may indicate the following problems:
-EINVAL¶Parameter event is
NULL.
-EBUSY¶The event loop object is not in the right state (see sd_event_prepare(3) for an explanation of possible states).
-ESTALE¶The event loop is already terminated.
-ECHILD¶The event loop has been created in a different process.
Other errors are possible too.
sd_event_run() and
sd_event_loop() are available
as a shared library, which can be compiled and linked to with the
libsystemd pkg-config(1)
file.