1 <?xml version='1.0'?> <!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*-->
2 <!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3 "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
6 SPDX-License-Identifier: LGPL-2.1+
9 <refentry id="sd_event_run" xmlns:xi="http://www.w3.org/2001/XInclude">
12 <title>sd_event_run</title>
13 <productname>systemd</productname>
17 <contrib>Developer</contrib>
18 <firstname>Tom</firstname>
19 <surname>Gundersen</surname>
20 <email>teg@jklm.no</email>
26 <refentrytitle>sd_event_run</refentrytitle>
27 <manvolnum>3</manvolnum>
31 <refname>sd_event_run</refname>
32 <refname>sd_event_loop</refname>
34 <refpurpose>Run an event loop</refpurpose>
39 <funcsynopsisinfo>#include <systemd/sd-event.h></funcsynopsisinfo>
42 <funcdef>int <function>sd_event_run</function></funcdef>
43 <paramdef>sd_event *<parameter>event</parameter></paramdef>
44 <paramdef>uint64_t <parameter>usec</parameter></paramdef>
48 <funcdef>int <function>sd_event_loop</function></funcdef>
49 <paramdef>sd_event *<parameter>event</parameter></paramdef>
55 <title>Description</title>
57 <para><function>sd_event_run()</function> may be used to run a single
58 iteration of the event loop specified in the
59 <parameter>event</parameter> parameter. The function waits until an event to
60 process is available, and dispatches the registered handler for
61 it. The <parameter>usec</parameter> parameter specifies the
62 maximum time (in microseconds) to wait for an event. Use
63 <constant>(uint64_t) -1</constant> to specify an infinite
66 <para><function>sd_event_loop()</function> invokes
67 <function>sd_event_run()</function> in a loop, thus implementing
68 the actual event loop. The call returns as soon as exiting was
70 <citerefentry><refentrytitle>sd_event_exit</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
72 <para>The event loop object <parameter>event</parameter> is
74 <citerefentry><refentrytitle>sd_event_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
75 Events sources to wait for and their handlers may be registered
77 <citerefentry><refentrytitle>sd_event_add_io</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
78 <citerefentry><refentrytitle>sd_event_add_time</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
79 <citerefentry><refentrytitle>sd_event_add_signal</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
80 <citerefentry><refentrytitle>sd_event_add_child</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
81 <citerefentry><refentrytitle>sd_event_add_defer</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
82 <citerefentry><refentrytitle>sd_event_add_post</refentrytitle><manvolnum>3</manvolnum></citerefentry>
84 <citerefentry><refentrytitle>sd_event_add_exit</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
87 <para>For low-level control of event loop execution, use
88 <citerefentry><refentrytitle>sd_event_prepare</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
89 <citerefentry><refentrytitle>sd_event_wait</refentrytitle><manvolnum>3</manvolnum></citerefentry>
91 <citerefentry><refentrytitle>sd_event_dispatch</refentrytitle><manvolnum>3</manvolnum></citerefentry>
92 which are wrapped by <function>sd_event_run()</function>. Along
94 <citerefentry><refentrytitle>sd_event_get_fd</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
95 these functions allow integration of an
96 <citerefentry><refentrytitle>sd-event</refentrytitle><manvolnum>3</manvolnum></citerefentry>
97 event loop into foreign event loop implementations.</para>
101 <title>Return Value</title>
103 <para>On failure, these functions return a negative errno-style
104 error code. <function>sd_event_run()</function> returns a
105 positive, non-zero integer if an event source was dispatched, and
106 zero when the specified timeout hit before an event source has
107 seen any event, and hence no event source was
108 dispatched. <function>sd_event_loop()</function> returns the exit
109 code specified when invoking
110 <function>sd_event_exit()</function>.</para>
114 <title>Errors</title>
116 <para>Returned errors may indicate the following problems:</para>
120 <term><constant>-EINVAL</constant></term>
122 <listitem><para>The <parameter>event</parameter> parameter is
123 invalid or <constant>NULL</constant>.</para></listitem>
127 <term><constant>-EBUSY</constant></term>
129 <listitem><para>The event loop object is not in the right
131 <citerefentry><refentrytitle>sd_event_prepare</refentrytitle><manvolnum>3</manvolnum></citerefentry>
132 for an explanation of possible states).</para></listitem>
136 <term><constant>-ESTALE</constant></term>
138 <listitem><para>The event loop is already terminated.</para></listitem>
143 <term><constant>-ECHILD</constant></term>
145 <listitem><para>The event loop has been created in a different process.</para></listitem>
151 <para>Other errors are possible, too.</para>
154 <xi:include href="libelogind-pkgconfig.xml" />
157 <title>See Also</title>
160 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
161 <citerefentry><refentrytitle>sd_event_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
162 <citerefentry><refentrytitle>sd_event_add_io</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
163 <citerefentry><refentrytitle>sd_event_add_time</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
164 <citerefentry><refentrytitle>sd_event_add_signal</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
165 <citerefentry><refentrytitle>sd_event_add_defer</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
166 <citerefentry><refentrytitle>sd_event_add_exit</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
167 <citerefentry><refentrytitle>sd_event_add_post</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
168 <citerefentry><refentrytitle>sd_event_exit</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
169 <citerefentry><refentrytitle>sd_event_get_fd</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
170 <citerefentry><refentrytitle>sd_event_wait</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
171 <ulink url="https://developer.gnome.org/glib/unstable/glib-The-Main-Event-Loop.html">GLib Main Event Loop</ulink>.