234N/A<?
xml version='1.0'?>
<!--*- Mode: nxml; nxml-child-indent: 2; indent-tabs-mode: nil -*--> 234N/A<!
DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" 234N/A This file is part of systemd. 234N/A Copyright 2014 Zbigniew Jędrzejewski-Szmek 234N/A systemd is free software; you can redistribute it and/or modify it 234N/A under the terms of the GNU Lesser General Public License as published by 234N/A the Free Software Foundation; either version 2.1 of the License, or 234N/A (at your option) any later version. 234N/A systemd is distributed in the hope that it will be useful, but 234N/A WITHOUT ANY WARRANTY; without even the implied warranty of 234N/A MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 234N/A Lesser General Public License for more details. 234N/A You should have received a copy of the GNU Lesser General Public License 234N/A<
refentry id="sd_event_add_signal" conditional="ENABLE_KDBUS">
234N/A <
title>sd_event_add_signal</
title>
234N/A <
productname>systemd</
productname>
844N/A <
contrib>More text</
contrib>
844N/A <
firstname>Zbigniew</
firstname>
234N/A <
surname>Jędrzejewski-Szmek</
surname>
1258N/A <
email>zbyszek@in.waw.pl</
email>
234N/A <
refentrytitle>sd_event_add_signal</
refentrytitle>
234N/A <
manvolnum>3</
manvolnum>
234N/A <
refname>sd_event_add_signal</
refname>
234N/A <
refname>sd_event_source_get_signal</
refname>
234N/A <
refpurpose>Add a signal event source to an event loop</
refpurpose>
<
funcdef>int <
function>sd_event_add_signal</
function></
funcdef>
<
paramdef>sd_event *<
parameter>event</
parameter></
paramdef>
<
paramdef>sd_event_source **<
parameter>source</
parameter></
paramdef>
<
paramdef>int <
parameter>signal</
parameter></
paramdef>
<
paramdef>sd_event_signal_handler_t <
parameter>handler</
parameter></
paramdef>
<
paramdef>void *<
parameter>userdata</
parameter></
paramdef>
<
funcdef>typedef int (*<
function>sd_event_signal_handler_t</
function>)</
funcdef>
<
paramdef>sd_event_source *<
parameter>s</
parameter></
paramdef>
<
paramdef>const struct signalfd_siginfo *<
parameter>si</
parameter></
paramdef>
<
paramdef>void *<
parameter>userdata</
parameter></
paramdef>
<
funcdef>int <
function>sd_event_source_get_signal</
function></
funcdef>
<
paramdef>sd_event_source *<
parameter>source</
parameter></
paramdef>
<
title>Description</
title>
<
para><
function>sd_event_add_signal()</
function> adds a new signal
event source to an event loop object. The event loop is specified
in <
parameter>event</
parameter>, the event source is returned in
the <
parameter>source</
parameter> parameter. The
<
parameter>signal</
parameter> parameter specifies the signal to be handled
<
citerefentry project='man-pages'><
refentrytitle>signal</
refentrytitle><
manvolnum>7</
manvolnum></
citerefentry>).
The <
parameter>handler</
parameter> must reference a function to
call when the signal is delivered or be <
constant>NULL</
constant>.
The handler function will be passed the
<
parameter>userdata</
parameter> pointer, which may be chosen
freely by the caller. The handler also receives a pointer to a
<
structname>const struct signalfd_siginfo</
structname> containing
the information about the received signal. See
<
citerefentry project='man-pages'><
refentrytitle>signalfd</
refentrytitle><
manvolnum>2</
manvolnum></
citerefentry>
for further information.</
para>
<
para>Only a single handler may be installed for a specific
signal. The signal will be unblocked, and must be
blocked when the function is called. If the handler is not
specified (<
parameter>handler</
parameter> is
<
constant>NULL</
constant>), a default handler which causes the
program to exit will be used. By default, the handler is enabled
permanently (<
constant>SD_EVENT_ON</
constant>), but this may be
<
citerefentry><
refentrytitle>sd_event_source_set_enabled</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>.
If the handler function returns a negative error code, it will be
disabled after the invocation, even if
<
constant>SD_EVENT_ON</
constant> mode is set.
<
para><
function>sd_event_source_get_signal()</
function> retrieves
the configured signal number of a signal event source created
previously with <
function>sd_event_add_signal()</
function>. It
takes the event source object as the <
parameter>source</
parameter>
<
title>Return Value</
title>
<
para>On success, these functions return 0 or a positive
integer. On failure, they return a negative errno-style error
<
para>Returned errors may indicate the following problems:</
para>
<
term><
constant>-ENOMEM</
constant></
term>
<
listitem><
para>Not enough memory to allocate an object.</
para></
listitem>
<
term><
constant>-EINVAL</
constant></
term>
<
listitem><
para>An invalid argument has been passed.</
para></
listitem>
<
term><
constant>-EBUSY</
constant></
term>
<
listitem><
para>An handler is already installed for this
signal or the signal was not blocked previously.</
para></
listitem>
<
term><
constant>-ESTALE</
constant></
term>
<
listitem><
para>The event loop is already terminated.</
para></
listitem>
<
term><
constant>-ECHILD</
constant></
term>
<
listitem><
para>The event loop has been created in a different process.</
para></
listitem>
<
para><
function>sd_event_add_signal()</
function> and the other functions
described here are available as a shared library, which can be
compiled and linked to with the
<
constant>libsystemd</
constant> <
citerefentry project='die-net'><
refentrytitle>pkg-config</
refentrytitle><
manvolnum>1</
manvolnum></
citerefentry>
<
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_add_time</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>,
<
citerefentry><
refentrytitle>sd_event_add_child</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>,
<
citerefentry><
refentrytitle>sd_event_add_defer</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>,
<
citerefentry><
refentrytitle>sd_event_source_set_enabled</
refentrytitle><
manvolnum>3</
manvolnum></
citerefentry>