]> git.ipfire.org Git - thirdparty/systemd.git/blame - man/sd_event_add_signal.xml
man: fix incorrectly placed full stop
[thirdparty/systemd.git] / man / sd_event_add_signal.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+ -->
3144ebca 5
dc83f27a 6<refentry id="sd_event_add_signal" xmlns:xi="http://www.w3.org/2001/XInclude">
3144ebca
ZJS
7
8 <refentryinfo>
9 <title>sd_event_add_signal</title>
10 <productname>systemd</productname>
3144ebca
ZJS
11 </refentryinfo>
12
13 <refmeta>
14 <refentrytitle>sd_event_add_signal</refentrytitle>
15 <manvolnum>3</manvolnum>
16 </refmeta>
17
18 <refnamediv>
19 <refname>sd_event_add_signal</refname>
20 <refname>sd_event_source_get_signal</refname>
dc83f27a 21 <refname>sd_event_signal_handler_t</refname>
3144ebca 22
dc83f27a
LP
23 <refpurpose>Add a UNIX process signal event source to an event
24 loop</refpurpose>
3144ebca
ZJS
25 </refnamediv>
26
27 <refsynopsisdiv>
28 <funcsynopsis>
dc83f27a
LP
29 <funcsynopsisinfo>#include &lt;systemd/sd-event.h&gt;</funcsynopsisinfo>
30
31 <funcsynopsisinfo><token>typedef</token> struct sd_event_source sd_event_source;</funcsynopsisinfo>
32
33 <funcprototype>
34 <funcdef>typedef int (*<function>sd_event_signal_handler_t</function>)</funcdef>
35 <paramdef>sd_event_source *<parameter>s</parameter></paramdef>
36 <paramdef>const struct signalfd_siginfo *<parameter>si</parameter></paramdef>
37 <paramdef>void *<parameter>userdata</parameter></paramdef>
38 </funcprototype>
3144ebca
ZJS
39
40 <funcprototype>
41 <funcdef>int <function>sd_event_add_signal</function></funcdef>
42 <paramdef>sd_event *<parameter>event</parameter></paramdef>
43 <paramdef>sd_event_source **<parameter>source</parameter></paramdef>
44 <paramdef>int <parameter>signal</parameter></paramdef>
45 <paramdef>sd_event_signal_handler_t <parameter>handler</parameter></paramdef>
46 <paramdef>void *<parameter>userdata</parameter></paramdef>
47 </funcprototype>
48
3144ebca
ZJS
49 <funcprototype>
50 <funcdef>int <function>sd_event_source_get_signal</function></funcdef>
51 <paramdef>sd_event_source *<parameter>source</parameter></paramdef>
52 </funcprototype>
53
54 </funcsynopsis>
55 </refsynopsisdiv>
56
57 <refsect1>
58 <title>Description</title>
59
dc83f27a
LP
60 <para><function>sd_event_add_signal()</function> adds a new UNIX
61 process signal event source to an event loop. The event loop
62 object is specified in the <parameter>event</parameter> parameter,
63 and the event source object is returned in the
64 <parameter>source</parameter> parameter. The
65 <parameter>signal</parameter> parameter specifies the numeric
66 signal to be handled (see <citerefentry
67 project='man-pages'><refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>).
68 The <parameter>handler</parameter> parameter must reference a
69 function to call when the signal is received or be
70 <constant>NULL</constant>. The handler function will be passed
71 the <parameter>userdata</parameter> pointer, which may be chosen
3144ebca 72 freely by the caller. The handler also receives a pointer to a
dc83f27a
LP
73 <structname>signalfd_siginfo</structname> structure containing
74 information about the received signal. See <citerefentry
75 project='man-pages'><refentrytitle>signalfd</refentrytitle><manvolnum>2</manvolnum></citerefentry>
922d948b 76 for further information.</para>
3144ebca 77
68765d94
LP
78 <para>Only a single handler may be installed for a specific signal. The signal must be blocked in all
79 threads before this function is called (using <citerefentry
80 project='man-pages'><refentrytitle>sigprocmask</refentrytitle><manvolnum>2</manvolnum></citerefentry> or
dc83f27a 81 <citerefentry
68765d94
LP
82 project='man-pages'><refentrytitle>pthread_sigmask</refentrytitle><manvolnum>3</manvolnum></citerefentry>). If
83 the handler is not specified (<parameter>handler</parameter> is <constant>NULL</constant>), a default
84 handler which causes the program to exit cleanly will be used.</para>
dc83f27a
LP
85
86 <para>By default, the event source is enabled permanently
87 (<constant>SD_EVENT_ON</constant>), but this may be changed with
3144ebca
ZJS
88 <citerefentry><refentrytitle>sd_event_source_set_enabled</refentrytitle><manvolnum>3</manvolnum></citerefentry>.
89 If the handler function returns a negative error code, it will be
dc83f27a
LP
90 disabled after the invocation, even if the
91 <constant>SD_EVENT_ON</constant> mode was requested before.
3144ebca
ZJS
92 </para>
93
dc83f27a
LP
94 <para>To destroy an event source object use
95 <citerefentry><refentrytitle>sd_event_source_unref</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
96 but note that the event source is only removed from the event loop
97 when all references to the event source are dropped. To make sure
f23e83b1
ZJS
98 an event source does not fire anymore, even if it is still referenced,
99 disable the event source using
100 <citerefentry><refentrytitle>sd_event_source_set_enabled</refentrytitle><manvolnum>3</manvolnum></citerefentry>
101 with <constant>SD_EVENT_OFF</constant>.</para>
dc83f27a 102
7f3fdb7f 103 <para>If the second parameter of
f23e83b1
ZJS
104 <function>sd_event_add_signal()</function> is
105 <constant>NULL</constant> no reference to the event source object
106 is returned. In this case the event source is considered
107 "floating", and will be destroyed implicitly when the event loop
108 itself is destroyed.</para>
109
110 <para><function>sd_event_source_get_signal()</function> returns
111 the configured signal number of an event source created previously
112 with <function>sd_event_add_signal()</function>. It takes the
113 event source object as the <parameter>source</parameter>
3144ebca 114 parameter.</para>
3144ebca
ZJS
115 </refsect1>
116
117 <refsect1>
118 <title>Return Value</title>
119
120 <para>On success, these functions return 0 or a positive
121 integer. On failure, they return a negative errno-style error
f23e83b1 122 code.</para>
3144ebca 123
b1de39de
ZJS
124 <refsect2>
125 <title>Errors</title>
3144ebca 126
b1de39de 127 <para>Returned errors may indicate the following problems:</para>
3144ebca 128
b1de39de
ZJS
129 <variablelist>
130 <varlistentry>
131 <term><constant>-ENOMEM</constant></term>
3144ebca 132
b1de39de
ZJS
133 <listitem><para>Not enough memory to allocate an object.</para></listitem>
134 </varlistentry>
3144ebca 135
b1de39de
ZJS
136 <varlistentry>
137 <term><constant>-EINVAL</constant></term>
3144ebca 138
b1de39de
ZJS
139 <listitem><para>An invalid argument has been passed.</para></listitem>
140 </varlistentry>
3144ebca 141
b1de39de
ZJS
142 <varlistentry>
143 <term><constant>-EBUSY</constant></term>
3144ebca 144
b1de39de
ZJS
145 <listitem><para>A handler is already installed for this
146 signal or the signal was not blocked previously.</para></listitem>
147 </varlistentry>
3144ebca 148
b1de39de
ZJS
149 <varlistentry>
150 <term><constant>-ESTALE</constant></term>
3144ebca 151
b1de39de
ZJS
152 <listitem><para>The event loop is already terminated.</para></listitem>
153 </varlistentry>
3144ebca 154
b1de39de
ZJS
155 <varlistentry>
156 <term><constant>-ECHILD</constant></term>
3144ebca 157
b1de39de
ZJS
158 <listitem><para>The event loop has been created in a different process.</para></listitem>
159 </varlistentry>
3144ebca 160
b1de39de
ZJS
161 <varlistentry>
162 <term><constant>-EDOM</constant></term>
3144ebca 163
b1de39de
ZJS
164 <listitem><para>The passed event source is not a signal event source.</para></listitem>
165 </varlistentry>
3144ebca 166
b1de39de
ZJS
167 </variablelist>
168 </refsect2>
3144ebca
ZJS
169 </refsect1>
170
dc83f27a
LP
171 <xi:include href="libsystemd-pkgconfig.xml" />
172
3144ebca
ZJS
173 <refsect1>
174 <title>See Also</title>
175
176 <para>
177 <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
178 <citerefentry><refentrytitle>sd-event</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
179 <citerefentry><refentrytitle>sd_event_new</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
dc83f27a
LP
180 <citerefentry><refentrytitle>sd_event_now</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
181 <citerefentry><refentrytitle>sd_event_add_io</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
3144ebca 182 <citerefentry><refentrytitle>sd_event_add_time</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
edf25737 183 <citerefentry><refentrytitle>sd_event_add_child</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
1eb54dc6 184 <citerefentry><refentrytitle>sd_event_add_inotify</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
4dfefc19 185 <citerefentry><refentrytitle>sd_event_add_defer</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
dc83f27a
LP
186 <citerefentry><refentrytitle>sd_event_source_set_enabled</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
187 <citerefentry><refentrytitle>sd_event_source_set_description</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
188 <citerefentry><refentrytitle>sd_event_source_set_userdata</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
0bca2831 189 <citerefentry><refentrytitle>sd_event_source_set_floating</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
dc83f27a 190 <citerefentry project='man-pages'><refentrytitle>signal</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
68765d94
LP
191 <citerefentry project='man-pages'><refentrytitle>signalfd</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
192 <citerefentry project='man-pages'><refentrytitle>sigprocmask</refentrytitle><manvolnum>2</manvolnum></citerefentry>,
193 <citerefentry project='man-pages'><refentrytitle>pthread_sigmask</refentrytitle><manvolnum>3</manvolnum></citerefentry>
3144ebca
ZJS
194 </para>
195 </refsect1>
196
197</refentry>