diff options
Diffstat (limited to 'upstream/fedora-rawhide/man3/sd_event_wait.3')
-rw-r--r-- | upstream/fedora-rawhide/man3/sd_event_wait.3 | 310 |
1 files changed, 310 insertions, 0 deletions
diff --git a/upstream/fedora-rawhide/man3/sd_event_wait.3 b/upstream/fedora-rawhide/man3/sd_event_wait.3 new file mode 100644 index 00000000..8176dadb --- /dev/null +++ b/upstream/fedora-rawhide/man3/sd_event_wait.3 @@ -0,0 +1,310 @@ +'\" t +.TH "SD_EVENT_WAIT" "3" "" "systemd 255" "sd_event_wait" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +sd_event_wait, sd_event_prepare, sd_event_dispatch, sd_event_get_state, sd_event_get_iteration, SD_EVENT_INITIAL, SD_EVENT_PREPARING, SD_EVENT_ARMED, SD_EVENT_PENDING, SD_EVENT_RUNNING, SD_EVENT_EXITING, SD_EVENT_FINISHED \- Low\-level event loop operations +.SH "SYNOPSIS" +.sp +.ft B +.nf +#include <systemd/sd\-event\&.h> +.fi +.ft +.sp +.ft B +.nf +enum { + \fBSD_EVENT_INITIAL\fR, + \fBSD_EVENT_PREPARING\fR, + \fBSD_EVENT_ARMED\fR, + \fBSD_EVENT_PENDING\fR, + \fBSD_EVENT_RUNNING\fR, + \fBSD_EVENT_EXITING\fR, + \fBSD_EVENT_FINISHED\fR, +}; +.fi +.ft +.HP \w'int\ sd_event_prepare('u +.BI "int sd_event_prepare(sd_event\ *" "event" ");" +.HP \w'int\ sd_event_wait('u +.BI "int sd_event_wait(sd_event\ *" "event" ", uint64_t\ " "usec" ");" +.HP \w'int\ sd_event_dispatch('u +.BI "int sd_event_dispatch(sd_event\ *" "event" ");" +.HP \w'int\ sd_event_get_state('u +.BI "int sd_event_get_state(sd_event\ *" "event" ");" +.HP \w'int\ sd_event_get_iteration('u +.BI "int sd_event_get_iteration(sd_event\ *" "event" ", uint64_t\ *" "ret" ");" +.SH "DESCRIPTION" +.PP +The low\-level +\fBsd_event_prepare()\fR, +\fBsd_event_wait()\fR +and +\fBsd_event_dispatch()\fR +functions may be used to execute specific phases of an event loop\&. See +\fBsd_event_run\fR(3) +and +\fBsd_event_loop\fR(3) +for higher\-level functions that execute individual but complete iterations of an event loop or run it continuously\&. +.PP +\fBsd_event_prepare()\fR +checks for pending events and arms necessary timers\&. If any events are ready to be processed ("pending"), it returns a positive, non\-zero value, and the caller should process these events with +\fBsd_event_dispatch()\fR\&. +.PP +\fBsd_event_dispatch()\fR +dispatches the highest priority event source that has a pending event\&. On success, +\fBsd_event_dispatch()\fR +returns either zero, which indicates that no further event sources may be dispatched and exiting of the event loop was requested via +\fBsd_event_exit\fR(3); or a positive non\-zero value, which means that an event source was dispatched and the loop returned to its initial state, and the caller should initiate the next event loop iteration by invoking +\fBsd_event_prepare()\fR +again\&. +.PP +In case +\fBsd_event_prepare()\fR +returned zero, +\fBsd_event_wait()\fR +should be called to wait for further events or a timeout\&. If any events are ready to be processed, it returns a positive, non\-zero value, and the events should be dispatched with +\fBsd_event_dispatch()\fR\&. Otherwise, the event loop returned to its initial state and the next event loop iteration should be initiated by invoking +\fBsd_event_prepare()\fR +again\&. +.PP +\fBsd_event_get_state()\fR +may be used to determine the state the event loop is currently in\&. It returns one of the states described below\&. +.PP +\fBsd_event_get_iteration()\fR +may be used to determine the current iteration of the event loop\&. It returns an unsigned 64\-bit integer containing a counter that increases monotonically with each iteration of the event loop, starting with 0\&. The counter is increased at the time of the +\fBsd_event_prepare()\fR +invocation\&. +.PP +All five functions take, as the first argument, the event loop object +\fIevent\fR +that has been created with +\fBsd_event_new()\fR\&. The timeout for +\fBsd_event_wait()\fR +is specified in +\fIusec\fR +in microseconds\&. +\fB(uint64_t) \-1\fR +may be used to specify an infinite timeout\&. +.SH "STATE MACHINE" +.PP +The event loop knows the following states, that may be queried with +\fBsd_event_get_state()\fR\&. +.PP +\fBSD_EVENT_INITIAL\fR +.RS 4 +The initial state the event loop is in, before each event loop iteration\&. Use +\fBsd_event_prepare()\fR +to transition the event loop into the +\fBSD_EVENT_ARMED\fR +or +\fBSD_EVENT_PENDING\fR +states\&. +.sp +Added in version 229\&. +.RE +.PP +\fBSD_EVENT_PREPARING\fR +.RS 4 +An event source is currently being prepared, i\&.e\&. the preparation handler is currently being executed, as set with +\fBsd_event_source_set_prepare\fR(3)\&. This state is only seen in the event source preparation handler that is invoked from the +\fBsd_event_prepare()\fR +call and is immediately followed by +\fBSD_EVENT_ARMED\fR +or +\fBSD_EVENT_PENDING\fR\&. +.sp +Added in version 229\&. +.RE +.PP +\fBSD_EVENT_ARMED\fR +.RS 4 +\fBsd_event_prepare()\fR +has been called and no event sources were ready to be dispatched\&. Use +\fBsd_event_wait()\fR +to wait for new events, and transition into +\fBSD_EVENT_PENDING\fR +or back into +\fBSD_EVENT_INITIAL\fR\&. +.sp +Added in version 229\&. +.RE +.PP +\fBSD_EVENT_PENDING\fR +.RS 4 +\fBsd_event_prepare()\fR +or +\fBsd_event_wait()\fR +have been called and there were event sources with events pending\&. Use +\fBsd_event_dispatch()\fR +to dispatch the highest priority event source and transition back to +\fBSD_EVENT_INITIAL\fR, or +\fBSD_EVENT_FINISHED\fR\&. +.sp +Added in version 229\&. +.RE +.PP +\fBSD_EVENT_RUNNING\fR +.RS 4 +A regular event source is currently being dispatched\&. This state is only seen in the event source handler that is invoked from the +\fBsd_event_dispatch()\fR +call, and is immediately followed by +\fBSD_EVENT_INITIAL\fR +or +\fBSD_EVENT_FINISHED\fR +as soon the event source handler returns\&. Note that during dispatching of exit event sources the +\fBSD_EVENT_EXITING\fR +state is seen instead\&. +.sp +Added in version 229\&. +.RE +.PP +\fBSD_EVENT_EXITING\fR +.RS 4 +Similar to +\fBSD_EVENT_RUNNING\fR +but is the state in effect while dispatching exit event sources\&. It is followed by +\fBSD_EVENT_INITIAL\fR +or +\fBSD_EVENT_FINISHED\fR +as soon as the event handler returns\&. +.sp +Added in version 229\&. +.RE +.PP +\fBSD_EVENT_FINISHED\fR +.RS 4 +The event loop has exited\&. All exit event sources have run\&. If the event loop is in this state it serves no purpose anymore, and should be freed\&. +.sp +Added in version 229\&. +.RE +.PP +A simplified flow chart of the states and the calls to transition between them is shown below\&. Note that +\fBSD_EVENT_PREPARING\fR, +\fBSD_EVENT_RUNNING\fR +and +\fBSD_EVENT_EXITING\fR +are not shown here\&. +.sp +.if n \{\ +.RS 4 +.\} +.nf + INITIAL \-<\-\-\-<\-\-\-<\-\-\-<\-\-\-<\-\-\-<\-\-\-<\-\-\-<\-\-\-<\-\-\-<\-\-\-<\-\-\-<\-\-\-\e + | | + | ^ + | | + v ret == 0 | + sd_event_prepare() >\-\-\->\-\-\->\-\-\->\-\-\->\- ARMED | + | | ^ + | ret > 0 | | + | | | + v v ret == 0 | + PENDING <\-\-\-<\-\-\-<\-\-\-<\-\-\-<\-\-\-< sd_event_wait() >\-\-\->\-\-\->\-\-+ + | ret > 0 ^ + | | + | | + v | + sd_event_dispatch() >\-\-\->\-\-\->\-\-\->\-\-\->\-\-\->\-\-\->\-\-\->\-\-\->\-\-\->\-\-\->/ + | ret > 0 + | ret == 0 + | + v + FINISHED + +.fi +.if n \{\ +.RE +.\} +.SH "RETURN VALUE" +.PP +On success, these functions return 0 or a positive integer\&. On failure, they return a negative errno\-style error code\&. In case of +\fBsd_event_prepare()\fR +and +\fBsd_event_wait()\fR, a positive, non\-zero return code indicates that events are ready to be processed and zero indicates that no events are ready\&. In case of +\fBsd_event_dispatch()\fR, a positive, non\-zero return code indicates that the event loop returned to its initial state and zero indicates the event loop has exited\&. +\fBsd_event_get_state()\fR +returns a positive or zero state on success\&. +.SS "Errors" +.PP +Returned errors may indicate the following problems: +.PP +\fB\-EINVAL\fR +.RS 4 +The +\fIevent\fR +parameter is invalid or +\fBNULL\fR\&. +.RE +.PP +\fB\-EBUSY\fR +.RS 4 +The event loop object is not in the right state\&. +.RE +.PP +\fB\-ESTALE\fR +.RS 4 +The event loop is already terminated\&. +.RE +.PP +\fB\-ECHILD\fR +.RS 4 +The event loop has been created in a different process, library or module instance\&. +.RE +.PP +Other errors are possible, too\&. +.SH "NOTES" +.PP +Functions described here are available as a shared library, which can be compiled against and linked to with the +\fBlibsystemd\fR\ \&\fBpkg-config\fR(1) +file\&. +.PP +The code described here uses +\fBgetenv\fR(3), which is declared to be not multi\-thread\-safe\&. This means that the code calling the functions described here must not call +\fBsetenv\fR(3) +from a parallel thread\&. It is recommended to only do calls to +\fBsetenv()\fR +from an early phase of the program when no other threads have been started\&. +.SH "HISTORY" +.PP +\fBsd_event_prepare()\fR, +\fBsd_event_wait()\fR, and +\fBsd_event_dispatch()\fR +were added in version 220\&. +.PP +\fBsd_event_get_state()\fR +was added in version 229\&. +.PP +\fBsd_event_get_iteration()\fR +was added in version 231\&. +.SH "SEE ALSO" +.PP +\fBsystemd\fR(1), +\fBsd_event_new\fR(3), +\fBsd_event_add_io\fR(3), +\fBsd_event_add_time\fR(3), +\fBsd_event_add_signal\fR(3), +\fBsd_event_add_child\fR(3), +\fBsd_event_add_inotify\fR(3), +\fBsd_event_add_defer\fR(3), +\fBsd_event_run\fR(3), +\fBsd_event_get_fd\fR(3), +\fBsd_event_source_set_prepare\fR(3) |