<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
        "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">

<!--
  This file is part of systemd.

  Copyright 2010 Lennart Poettering

  systemd is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as published by
  the Free Software Foundation; either version 2.1 of the License, or
  (at your option) any later version.

  systemd is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public License
  along with systemd; If not, see <http://www.gnu.org/licenses/>.
-->

<refentry id="sd-daemon">

        <refentryinfo>
                <title>sd-readahead</title>
                <productname>systemd</productname>

                <authorgroup>
                        <author>
                                <contrib>Developer</contrib>
                                <firstname>Lennart</firstname>
                                <surname>Poettering</surname>
                                <email>lennart@poettering.net</email>
                        </author>
                </authorgroup>
        </refentryinfo>

        <refmeta>
                <refentrytitle>sd-readahead</refentrytitle>
                <manvolnum>7</manvolnum>
        </refmeta>

        <refnamediv>
                <refname>sd-readahead</refname>
                <refpurpose>Reference implementation of APIs for
                controlling boot-time read-ahead</refpurpose>
        </refnamediv>

        <refsynopsisdiv>
                <funcsynopsis>
                        <funcsynopsisinfo>#include "sd-readahead.h"</funcsynopsisinfo>
                </funcsynopsis>
        </refsynopsisdiv>

        <refsect1>
                <title>Description</title>

                <para><filename>sd-readahead.c</filename> and
                <filename>sd-readahead.h</filename> provide a
                reference implementation for APIs for controlling boot-time
                read-ahead, as implemented by the read-ahead subsystem
                of the
                <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
                init system.</para>

                <para>See
                <citerefentry><refentrytitle>sd_readahead</refentrytitle><manvolnum>3</manvolnum></citerefentry>
                for more information about the function
                implemented.</para>
        </refsect1>

        <refsect1>
                <title>Notes</title>

                <para>This interface is provided by the reference
                implementation of APIs for controlling boot-time
                read-ahead and distributed with the systemd
                package. The algorithms it implements are simple, and
                can easily be reimplemented in daemons if it is
                important to support this interface without using the
                reference implementation. See the respective function
                man pages for details.</para>

                <para>In addition, for details about the algorithms
                check the liberally licensed reference implementation
                sources:
                <ulink url="http://cgit.freedesktop.org/systemd/systemd/plain/src/readahead/sd-readahead.c"/>
                resp. <ulink url="http://cgit.freedesktop.org/systemd/systemd/plain/src/systemd/sd-readahead.h"/></para>

                <para>These APIs are implemented in the reference
                implementation's drop-in
                <filename>sd-readahead.c</filename> and
                <filename>sd-readahead.h</filename> files. It is
                recommended that applications consuming these APIs copy
                the implementation into their source tree, either
                verbatim or in excerpts. These interfaces are
                currently not available in a dynamic library.</para>

                <para>The functions provided by this interface become
                NOPs when -DDISABLE_SYSTEMD is set during
                compilation. In addition, if
                <filename>sd-readhead.c</filename> is compiled on
                non-Linux systems it becomes NOPs.</para>
        </refsect1>

        <refsect1>
                <title>See Also</title>
                <para>
                        <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
                        <citerefentry><refentrytitle>sd_readahead</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
                        <citerefentry><refentrytitle>sd-daemon</refentrytitle><manvolnum>7</manvolnum></citerefentry>
                </para>
        </refsect1>

</refentry>
