]> git.ipfire.org Git - thirdparty/systemd.git/blame - man/sd_event_run.xml
travis: use UBSan checks from OSS-Fuzz
[thirdparty/systemd.git] / man / sd_event_run.xml
CommitLineData
514094f9 1<?xml version='1.0'?>
3a54a157
ZJS
2<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
0307f791 4<!-- SPDX-License-Identifier: LGPL-2.1+ -->
42f1ab50 5
dc83f27a 6<refentry id="sd_event_run" xmlns:xi="http://www.w3.org/2001/XInclude">
42f1ab50
ZJS
7
8 <refentryinfo>
9 <title>sd_event_run</title>
10 <productname>systemd</productname>
42f1ab50
ZJS
11 </refentryinfo>
12
13 <refmeta>
14 <refentrytitle>sd_event_run</refentrytitle>
15 <manvolnum>3</manvolnum>
16 </refmeta>
17
18 <refnamediv>
19 <refname>sd_event_run</refname>
20 <refname>sd_event_loop</refname>
21
dc83f27a 22 <refpurpose>Run an event loop</refpurpose>
42f1ab50
ZJS
23 </refnamediv>
24
25 <refsynopsisdiv>
26 <funcsynopsis>
27 <funcsynopsisinfo>#include &lt;systemd/sd-event.h&gt;</funcsynopsisinfo>
28
29 <funcprototype>
30 <funcdef>int <function>sd_event_run</function></funcdef>
31 <paramdef>sd_event *<parameter>event</parameter></paramdef>
dc83f27a 32 <paramdef>uint64_t <parameter>usec</parameter></paramdef>
42f1ab50
ZJS
33 </funcprototype>
34
35 <funcprototype>
36 <funcdef>int <function>sd_event_loop</function></funcdef>
37 <paramdef>sd_event *<parameter>event</parameter></paramdef>
38 </funcprototype>
39 </funcsynopsis>
40 </refsynopsisdiv>
41
42 <refsect1>
43 <title>Description</title>
44
dc83f27a
LP
45 <para><function>sd_event_run()</function> may be used to run a single
46 iteration of the event loop specified in the
47 <parameter>event</parameter> parameter. The function waits until an event to
48 process is available, and dispatches the registered handler for
49 it. The <parameter>usec</parameter> parameter specifies the
50 maximum time (in microseconds) to wait for an event. Use
51 <constant>(uint64_t) -1</constant> to specify an infinite
52 timeout.</para>
53
54 <para><function>sd_event_loop()</function> invokes
55 <function>sd_event_run()</function> in a loop, thus implementing
56 the actual event loop. The call returns as soon as exiting was
57 requested using
58 <citerefentry><refentrytitle>sd_event_exit</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
42f1ab50
ZJS
59
60 <para>The event loop object <parameter>event</parameter> is
61 created with
dc83f27a
LP
62 <citerefentry><refentrytitle>sd_event_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
63 Events sources to wait for and their handlers may be registered
64 with
65 <citerefentry><refentrytitle>sd_event_add_io</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
66 <citerefentry><refentrytitle>sd_event_add_time</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
67 <citerefentry><refentrytitle>sd_event_add_signal</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
68 <citerefentry><refentrytitle>sd_event_add_child</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
69 <citerefentry><refentrytitle>sd_event_add_defer</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
70 <citerefentry><refentrytitle>sd_event_add_post</refentrytitle><manvolnum>3</manvolnum></citerefentry>
42f1ab50 71 and
dc83f27a 72 <citerefentry><refentrytitle>sd_event_add_exit</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
42f1ab50
ZJS
73 </para>
74
dc83f27a
LP
75 <para>For low-level control of event loop execution, use
76 <citerefentry><refentrytitle>sd_event_prepare</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
77 <citerefentry><refentrytitle>sd_event_wait</refentrytitle><manvolnum>3</manvolnum></citerefentry>
78 and
79 <citerefentry><refentrytitle>sd_event_dispatch</refentrytitle><manvolnum>3</manvolnum></citerefentry>
80 which are wrapped by <function>sd_event_run()</function>. Along
81 with
82 <citerefentry><refentrytitle>sd_event_get_fd</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
83 these functions allow integration of an
84 <citerefentry><refentrytitle>sd-event</refentrytitle><manvolnum>3</manvolnum></citerefentry>
85 event loop into foreign event loop implementations.</para>
42f1ab50
ZJS
86 </refsect1>
87
88 <refsect1>
89 <title>Return Value</title>
90
dc83f27a
LP
91 <para>On failure, these functions return a negative errno-style
92 error code. <function>sd_event_run()</function> returns a
93 positive, non-zero integer if an event source was dispatched, and
94 zero when the specified timeout hit before an event source has
95 seen any event, and hence no event source was
96 dispatched. <function>sd_event_loop()</function> returns the exit
97 code specified when invoking
98 <function>sd_event_exit()</function>.</para>
42f1ab50 99
b1de39de
ZJS
100 <refsect2>
101 <title>Errors</title>
42f1ab50 102
b1de39de 103 <para>Returned errors may indicate the following problems:</para>
42f1ab50 104
b1de39de
ZJS
105 <variablelist>
106 <varlistentry>
107 <term><constant>-EINVAL</constant></term>
42f1ab50 108
b1de39de
ZJS
109 <listitem><para>The <parameter>event</parameter> parameter is invalid or
110 <constant>NULL</constant>.</para></listitem>
111 </varlistentry>
42f1ab50 112
b1de39de
ZJS
113 <varlistentry>
114 <term><constant>-EBUSY</constant></term>
42f1ab50 115
b1de39de
ZJS
116 <listitem><para>The event loop object is not in the right
117 state (see
118 <citerefentry><refentrytitle>sd_event_prepare</refentrytitle><manvolnum>3</manvolnum></citerefentry>
119 for an explanation of possible states).</para></listitem>
120 </varlistentry>
42f1ab50 121
b1de39de
ZJS
122 <varlistentry>
123 <term><constant>-ESTALE</constant></term>
42f1ab50 124
b1de39de 125 <listitem><para>The event loop is already terminated.</para></listitem>
42f1ab50 126
b1de39de 127 </varlistentry>
42f1ab50 128
b1de39de
ZJS
129 <varlistentry>
130 <term><constant>-ECHILD</constant></term>
42f1ab50 131
b1de39de 132 <listitem><para>The event loop has been created in a different process.</para></listitem>
42f1ab50 133
b1de39de 134 </varlistentry>
42f1ab50 135
b1de39de 136 </variablelist>
42f1ab50 137
b1de39de
ZJS
138 <para>Other errors are possible, too.</para>
139 </refsect2>
42f1ab50
ZJS
140 </refsect1>
141
dc83f27a 142 <xi:include href="libsystemd-pkgconfig.xml" />
42f1ab50
ZJS
143
144 <refsect1>
145 <title>See Also</title>
146
147 <para>
148 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
8274a30d 149 <citerefentry><refentrytitle>sd-event</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
42f1ab50 150 <citerefentry><refentrytitle>sd_event_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
42f1ab50
ZJS
151 <citerefentry><refentrytitle>sd_event_add_io</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
152 <citerefentry><refentrytitle>sd_event_add_time</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
153 <citerefentry><refentrytitle>sd_event_add_signal</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
8274a30d
LP
154 <citerefentry><refentrytitle>sd_event_add_child</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
155 <citerefentry><refentrytitle>sd_event_add_inotify</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
42f1ab50 156 <citerefentry><refentrytitle>sd_event_add_defer</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
dc83f27a
LP
157 <citerefentry><refentrytitle>sd_event_exit</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
158 <citerefentry><refentrytitle>sd_event_get_fd</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
159 <citerefentry><refentrytitle>sd_event_wait</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
8274a30d 160 <ulink url="https://developer.gnome.org/glib/unstable/glib-The-Main-Event-Loop.html">GLib Main Event Loop</ulink>
42f1ab50
ZJS
161 </para>
162 </refsect1>
163
164</refentry>