sd-daemon.xml revision 71e6c1cf47c35cc5a58cefaabe4f6848d6f09501
97a9a944b5887e91042b019776c41d5dd74557aferikabele<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
97a9a944b5887e91042b019776c41d5dd74557aferikabele "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
8c81ebbdeed67059e7a1106d7c617543e901c3abyoshiki This file is part of systemd.
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd Copyright 2010 Lennart Poettering
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd systemd is free software; you can redistribute it and/or modify it
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen under the terms of the GNU General Public License as published by
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen the Free Software Foundation; either version 2 of the License, or
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen (at your option) any later version.
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd systemd is distributed in the hope that it will be useful, but
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd WITHOUT ANY WARRANTY; without even the implied warranty of
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
d229f940abfb2490dee17979e9a5ff31b7012eb5rbowen General Public License for more details.
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd You should have received a copy of the GNU General Public License
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd along with systemd; If not, see <http://www.gnu.org/licenses/>.
3b3b7fc78d1f5bfc2769903375050048ff41ff26nd <refentryinfo>
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung <authorgroup>
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd </authorgroup>
8c81ebbdeed67059e7a1106d7c617543e901c3abyoshiki </refentryinfo>
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd </refmeta>
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd <refnamediv>
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd <refpurpose>Reference implementation of APIs for
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd new-style daemons</refpurpose>
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd </refnamediv>
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedooh <refsynopsisdiv>
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd <funcsynopsis>
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd <funcsynopsisinfo>#include "sd-daemon.h"</funcsynopsisinfo>
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd </funcsynopsis>
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd </refsynopsisdiv>
0c4abc32c00611fe1d52c9661f5cc79a3f74c6d4nd implementation of various APIs for new-style daemons,
06ba4a61654b3763ad65f52283832ebf058fdf1cslive as implemented by the
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive init system.</para>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <citerefentry><refentrytitle>sd_booted</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <citerefentry><refentrytitle>sd_is_fifo</refentrytitle><manvolnum>3</manvolnum></citerefentry>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive for more information about the functions
06ba4a61654b3763ad65f52283832ebf058fdf1cslive implemented. In addition to these functions a couple
06ba4a61654b3763ad65f52283832ebf058fdf1cslive of logging prefixes are defined as macros:</para>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <programlisting>#define SD_EMERG "<0>" /* system is unusable */
06ba4a61654b3763ad65f52283832ebf058fdf1cslive#define SD_ALERT "<1>" /* action must be taken immediately */
06ba4a61654b3763ad65f52283832ebf058fdf1cslive#define SD_CRIT "<2>" /* critical conditions */
06ba4a61654b3763ad65f52283832ebf058fdf1cslive#define SD_ERR "<3>" /* error conditions */
06ba4a61654b3763ad65f52283832ebf058fdf1cslive#define SD_WARNING "<4>" /* warning conditions */
06ba4a61654b3763ad65f52283832ebf058fdf1cslive#define SD_NOTICE "<5>" /* normal but significant condition */
06ba4a61654b3763ad65f52283832ebf058fdf1cslive#define SD_INFO "<6>" /* informational */
06ba4a61654b3763ad65f52283832ebf058fdf1cslive#define SD_DEBUG "<7>" /* debug-level messages */</programlisting>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <para>These prefixes are intended to be used in
06ba4a61654b3763ad65f52283832ebf058fdf1cslive conjunction with STDERR-based logging as implemented
06ba4a61654b3763ad65f52283832ebf058fdf1cslive by systemd. If a systemd service definition file is
06ba4a61654b3763ad65f52283832ebf058fdf1cslive configured with <varname>StandardError=syslog</varname>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive prefixes can be used to encode a log level in lines
06ba4a61654b3763ad65f52283832ebf058fdf1cslive printed. This is similar to the kernel
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <citerefentry><refentrytitle>klogctl</refentrytitle><manvolnum>2</manvolnum></citerefentry>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive for more information.</para>
82178a3043043b8813c0d7288a06ca1b7d110d4atakashi <para>The log levels are identical to
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <citerefentry><refentrytitle>syslog</refentrytitle><manvolnum>3</manvolnum></citerefentry>'s
06ba4a61654b3763ad65f52283832ebf058fdf1cslive log level system. To use these prefixes simply prefix
e1e8390280254f7f0580d701e583f670643d4f3fnilgun every line with one of these strings. A line that is
e1e8390280254f7f0580d701e583f670643d4f3fnilgun not prefixed will be logged at the default log level
e1e8390280254f7f0580d701e583f670643d4f3fnilgun SD_INFO.</para>
e1e8390280254f7f0580d701e583f670643d4f3fnilgun <para>A daemon may log with the log level
e1e8390280254f7f0580d701e583f670643d4f3fnilgun NOTICE by issuing this call:</para>
e1e8390280254f7f0580d701e583f670643d4f3fnilgun <programlisting>fprintf(stderr, SD_NOTICE "Hello World!\n");</programlisting>
e1e8390280254f7f0580d701e583f670643d4f3fnilgun </refsect1>
e1e8390280254f7f0580d701e583f670643d4f3fnilgun <para>These interfaces are provided by the reference
e1e8390280254f7f0580d701e583f670643d4f3fnilgun implementation of APIs for new-style daemons and
e1e8390280254f7f0580d701e583f670643d4f3fnilgun distributed with the systemd package. The algorithms
e1e8390280254f7f0580d701e583f670643d4f3fnilgun they implement are simple, and can easily be
e1e8390280254f7f0580d701e583f670643d4f3fnilgun reimplemented in daemons if it is important to support
e1e8390280254f7f0580d701e583f670643d4f3fnilgun this interface without using the reference
e1e8390280254f7f0580d701e583f670643d4f3fnilgun implementation. See the respective function man pages
e1e8390280254f7f0580d701e583f670643d4f3fnilgun for details.</para>
3a6531f1fd50efd78381e5800802a1449096781eslive <para>In addition, for details about the algorithms
3a6531f1fd50efd78381e5800802a1449096781eslive check the liberally licensed reference implementation
97a9a944b5887e91042b019776c41d5dd74557aferikabele <ulink url="http://cgit.freedesktop.org/systemd/tree/src/sd-daemon.c"/>
3a6531f1fd50efd78381e5800802a1449096781eslive resp. <ulink url="http://cgit.freedesktop.org/systemd/tree/src/sd-daemon.h"/></para>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <para>These APIs are implemented in the reference
e1e8390280254f7f0580d701e583f670643d4f3fnilgun implementation's <filename>sd-daemon.c</filename> and
e1e8390280254f7f0580d701e583f670643d4f3fnilgun interfaces are available as shared library, which can
e1e8390280254f7f0580d701e583f670643d4f3fnilgun be compiled and linked to with the
17ade6df5ec233536985eb1c130a906c725dd614humbedooh <citerefentry><refentrytitle>pkg-config</refentrytitle><manvolnum>1</manvolnum></citerefentry>
17ade6df5ec233536985eb1c130a906c725dd614humbedooh file. Alternatively, applications consuming these APIs
17ade6df5ec233536985eb1c130a906c725dd614humbedooh may copy the implementation into their source tree,
17ade6df5ec233536985eb1c130a906c725dd614humbedooh either verbatim or in excerpts.</para>
06ba4a61654b3763ad65f52283832ebf058fdf1cslive <para>The functions directly related to new-style
e1e8390280254f7f0580d701e583f670643d4f3fnilgun daemons become NOPs when -DDISABLE_SYSTEMD is set
e1e8390280254f7f0580d701e583f670643d4f3fnilgun during compilation and the reference implementation is
06ba4a61654b3763ad65f52283832ebf058fdf1cslive used as drop-in files. In addition, if
e1e8390280254f7f0580d701e583f670643d4f3fnilgun non-Linux systems they become NOPs.</para>
e06675c51d084791089d79c3ac18aeae8dd465fcrbb <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
17ade6df5ec233536985eb1c130a906c725dd614humbedooh <citerefentry><refentrytitle>sd_listen_fds</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
17ade6df5ec233536985eb1c130a906c725dd614humbedooh <citerefentry><refentrytitle>sd_notify</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
17ade6df5ec233536985eb1c130a906c725dd614humbedooh <citerefentry><refentrytitle>sd_booted</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
17ade6df5ec233536985eb1c130a906c725dd614humbedooh <citerefentry><refentrytitle>sd_is_fifo</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
e1e8390280254f7f0580d701e583f670643d4f3fnilgun <citerefentry><refentrytitle>daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry>,
e1e8390280254f7f0580d701e583f670643d4f3fnilgun <citerefentry><refentrytitle>systemd.service</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
e1e8390280254f7f0580d701e583f670643d4f3fnilgun <citerefentry><refentrytitle>systemd.socket</refentrytitle><manvolnum>5</manvolnum></citerefentry>,
e1e8390280254f7f0580d701e583f670643d4f3fnilgun <citerefentry><refentrytitle>fprintf</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
e1e8390280254f7f0580d701e583f670643d4f3fnilgun <citerefentry><refentrytitle>sd-readahead</refentrytitle><manvolnum>7</manvolnum></citerefentry>
e1e8390280254f7f0580d701e583f670643d4f3fnilgun </refsect1>