mirror of
https://github.com/systemd/systemd.git
synced 2024-12-28 11:21:59 +03:00
9809a788e4
The meaning of the return value, the default handlers, and loop exiting are now described.
203 lines
9.8 KiB
XML
203 lines
9.8 KiB
XML
<?xml version='1.0'?>
|
|
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
|
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->
|
|
|
|
<refentry id="sd_event_add_defer" xmlns:xi="http://www.w3.org/2001/XInclude">
|
|
|
|
<refentryinfo>
|
|
<title>sd_event_add_defer</title>
|
|
<productname>systemd</productname>
|
|
</refentryinfo>
|
|
|
|
<refmeta>
|
|
<refentrytitle>sd_event_add_defer</refentrytitle>
|
|
<manvolnum>3</manvolnum>
|
|
</refmeta>
|
|
|
|
<refnamediv>
|
|
<refname>sd_event_add_defer</refname>
|
|
<refname>sd_event_add_post</refname>
|
|
<refname>sd_event_add_exit</refname>
|
|
<refname>sd_event_handler_t</refname>
|
|
|
|
<refpurpose>Add static event sources to an event loop</refpurpose>
|
|
</refnamediv>
|
|
|
|
<refsynopsisdiv>
|
|
<funcsynopsis>
|
|
<funcsynopsisinfo>#include <systemd/sd-event.h></funcsynopsisinfo>
|
|
|
|
<funcsynopsisinfo><token>typedef</token> struct sd_event_source sd_event_source;</funcsynopsisinfo>
|
|
|
|
<funcprototype>
|
|
<funcdef>typedef int (*<function>sd_event_handler_t</function>)</funcdef>
|
|
<paramdef>sd_event_source *<parameter>s</parameter></paramdef>
|
|
<paramdef>void *<parameter>userdata</parameter></paramdef>
|
|
</funcprototype>
|
|
|
|
<funcprototype>
|
|
<funcdef>int <function>sd_event_add_defer</function></funcdef>
|
|
<paramdef>sd_event *<parameter>event</parameter></paramdef>
|
|
<paramdef>sd_event_source **<parameter>source</parameter></paramdef>
|
|
<paramdef>sd_event_handler_t <parameter>handler</parameter></paramdef>
|
|
<paramdef>void *<parameter>userdata</parameter></paramdef>
|
|
</funcprototype>
|
|
|
|
<funcprototype>
|
|
<funcdef>int <function>sd_event_add_post</function></funcdef>
|
|
<paramdef>sd_event *<parameter>event</parameter></paramdef>
|
|
<paramdef>sd_event_source **<parameter>source</parameter></paramdef>
|
|
<paramdef>sd_event_handler_t <parameter>handler</parameter></paramdef>
|
|
<paramdef>void *<parameter>userdata</parameter></paramdef>
|
|
</funcprototype>
|
|
|
|
<funcprototype>
|
|
<funcdef>int <function>sd_event_add_exit</function></funcdef>
|
|
<paramdef>sd_event *<parameter>event</parameter></paramdef>
|
|
<paramdef>sd_event_source **<parameter>source</parameter></paramdef>
|
|
<paramdef>sd_event_handler_t <parameter>handler</parameter></paramdef>
|
|
<paramdef>void *<parameter>userdata</parameter></paramdef>
|
|
</funcprototype>
|
|
|
|
</funcsynopsis>
|
|
</refsynopsisdiv>
|
|
|
|
<refsect1>
|
|
<title>Description</title>
|
|
|
|
<para>These three functions add new static event sources to an event loop. The event loop object is
|
|
specified in the <parameter>event</parameter> parameter, the event source object is returned in the
|
|
<parameter>source</parameter> parameter. The event sources are enabled statically and will "fire" when
|
|
the event loop is run and the conditions described below are met.</para>
|
|
|
|
<para>The <parameter>handler</parameter> is a function to call or <constant>NULL</constant>. The handler
|
|
function will be passed the <parameter>userdata</parameter> pointer, which may be chosen freely by the
|
|
caller. The handler may return negative to signal an error (see below), other return values are
|
|
ignored. If <parameter>handler</parameter> is <constant>NULL</constant>, a default handler that calls
|
|
<citerefentry><refentrytitle>sd_event_exit</refentrytitle><manvolnum>3</manvolnum></citerefentry> will be
|
|
used.</para>
|
|
|
|
<para><function>sd_event_add_defer()</function> adds a new event
|
|
source that will be dispatched instantly, before the event loop
|
|
goes to sleep again and waits for new events. By default, the
|
|
handler will be called once
|
|
(<constant>SD_EVENT_ONESHOT</constant>). Note that if the event
|
|
source is set to <constant>SD_EVENT_ON</constant> the event loop
|
|
will never go to sleep again, but continuously call the handler,
|
|
possibly interleaved with other event sources.</para>
|
|
|
|
<para><function>sd_event_add_post()</function> adds a new event
|
|
source that is run before the event loop will sleep and wait
|
|
for new events, but only after at least one other non-post event
|
|
source was dispatched. By default, the source is enabled
|
|
permanently (<constant>SD_EVENT_ON</constant>). Note that this
|
|
event source type will still allow the event loop to go to sleep
|
|
again, even if set to <constant>SD_EVENT_ON</constant>, as long as
|
|
no other event source is ever triggered.</para>
|
|
|
|
<para><function>sd_event_add_exit()</function> adds a new event
|
|
source that will be dispatched when the event loop is terminated
|
|
with <citerefentry><refentrytitle>sd_event_exit</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
|
|
|
|
<para>The
|
|
<citerefentry><refentrytitle>sd_event_source_set_enabled</refentrytitle><manvolnum>3</manvolnum></citerefentry>
|
|
function may be used to enable the event source permanently
|
|
(<constant>SD_EVENT_ON</constant>) or to make it fire just once
|
|
(<constant>SD_EVENT_ONESHOT</constant>).</para>
|
|
|
|
<para>If the handler function returns a negative error code, it will either be disabled after the
|
|
invocation, even if the <constant>SD_EVENT_ON</constant> mode was requested before, or it will cause the
|
|
loop to terminate, see
|
|
<citerefentry><refentrytitle>sd_event_source_set_exit_on_failure</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
|
|
</para>
|
|
|
|
<para>To destroy an event source object use
|
|
<citerefentry><refentrytitle>sd_event_source_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
|
but note that the event source is only removed from the event loop
|
|
when all references to the event source are dropped. To make sure
|
|
an event source does not fire anymore, even when there's still a
|
|
reference to it kept, consider setting the event source to
|
|
<constant>SD_EVENT_OFF</constant> with
|
|
<citerefentry><refentrytitle>sd_event_source_set_enabled</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>
|
|
|
|
<para>If the second parameter of these functions is passed as <constant>NULL</constant> no reference to
|
|
the event source object is returned. In this case the event source is considered "floating", and will be
|
|
destroyed implicitly when the event loop itself is destroyed.</para>
|
|
|
|
<para>If the <parameter>handler</parameter> parameter to <function>sd_event_add_defer()</function> or
|
|
<function>sd_event_add_post()</function> is <constant>NULL</constant>, and the event source fires, this
|
|
will be considered a request to exit the event loop. In this case, the <parameter>userdata</parameter>
|
|
parameter, cast to an integer, is passed as the exit code parameter to
|
|
<citerefentry><refentrytitle>sd_event_exit</refentrytitle><manvolnum>3</manvolnum></citerefentry>. Similar
|
|
functionality is not available for <function>sd_event_add_exit()</function>, as these types of event
|
|
sources are only dispatched when exiting anyway.</para>
|
|
</refsect1>
|
|
|
|
<refsect1>
|
|
<title>Return Value</title>
|
|
|
|
<para>On success, these functions return 0 or a positive
|
|
integer. On failure, they return a negative errno-style error
|
|
code.</para>
|
|
|
|
<refsect2>
|
|
<title>Errors</title>
|
|
|
|
<para>Returned errors may indicate the following problems:</para>
|
|
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><constant>-ENOMEM</constant></term>
|
|
|
|
<listitem><para>Not enough memory to allocate an object.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><constant>-EINVAL</constant></term>
|
|
|
|
<listitem><para>An invalid argument has been passed.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><constant>-ESTALE</constant></term>
|
|
|
|
<listitem><para>The event loop is already terminated.</para></listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry>
|
|
<term><constant>-ECHILD</constant></term>
|
|
|
|
<listitem><para>The event loop has been created in a different process.</para></listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
</refsect2>
|
|
</refsect1>
|
|
|
|
<xi:include href="libsystemd-pkgconfig.xml" />
|
|
|
|
<refsect1>
|
|
<title>See Also</title>
|
|
|
|
<para>
|
|
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
|
|
<citerefentry><refentrytitle>sd-event</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
|
<citerefentry><refentrytitle>sd_event_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
|
<citerefentry><refentrytitle>sd_event_now</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
|
<citerefentry><refentrytitle>sd_event_add_io</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
|
<citerefentry><refentrytitle>sd_event_add_time</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
|
<citerefentry><refentrytitle>sd_event_add_signal</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
|
<citerefentry><refentrytitle>sd_event_add_child</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
|
<citerefentry><refentrytitle>sd_event_add_inotify</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
|
<citerefentry><refentrytitle>sd_event_source_set_enabled</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
|
<citerefentry><refentrytitle>sd_event_source_set_priority</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
|
<citerefentry><refentrytitle>sd_event_source_set_userdata</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
|
<citerefentry><refentrytitle>sd_event_source_set_description</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
|
<citerefentry><refentrytitle>sd_event_source_set_floating</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
|
|
<citerefentry><refentrytitle>sd_event_exit</refentrytitle><manvolnum>3</manvolnum></citerefentry>
|
|
</para>
|
|
</refsect1>
|
|
|
|
</refentry>
|