Index · Directives · Python · libudev · gudev systemd 220

Name

sd_event_run, sd_event_loop — Run libsystemd event loop

Synopsis

#include <systemd/sd-event.h>
int sd_event_run(sd_event *event,
 uint64_t timeout);
 
int sd_event_loop(sd_event *event);
 

Description

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.

Return Value

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.

Errors

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.

Notes

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.

See Also

systemd(1), sd_event_new(3), sd_event_wait(3), sd_event_add_io(3), sd_event_add_time(3), sd_event_add_signal(3), sd_event_add_defer(3), sd_event_add_exit(3), sd_event_add_post(3), GLIb Main Event Loop.