<?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_inotify" xmlns:xi="http://www.w3.org/2001/XInclude">

  <refentryinfo>
    <title>sd_event_add_inotify</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>sd_event_add_inotify</refentrytitle>
    <manvolnum>3</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>sd_event_add_inotify</refname>
    <refname>sd_event_source_get_inotify_mask</refname>
    <refname>sd_event_inotify_handler_t</refname>

    <refpurpose>Add an "inotify" file system inode event source to an event loop</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <funcsynopsis>
      <funcsynopsisinfo>#include &lt;systemd/sd-event.h&gt;</funcsynopsisinfo>

      <funcsynopsisinfo><token>typedef</token> struct sd_event_source sd_event_source;</funcsynopsisinfo>

      <funcprototype>
        <funcdef>typedef int (*<function>sd_event_inotify_handler_t</function>)</funcdef>
        <paramdef>sd_event_source *<parameter>s</parameter></paramdef>
        <paramdef>const struct inotify_event *<parameter>event</parameter></paramdef>
        <paramdef>void *<parameter>userdata</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>int <function>sd_event_add_inotify</function></funcdef>
        <paramdef>sd_event *<parameter>event</parameter></paramdef>
        <paramdef>sd_event_source **<parameter>source</parameter></paramdef>
        <paramdef>const char *<parameter>path</parameter></paramdef>
        <paramdef>uint32_t <parameter>mask</parameter></paramdef>
        <paramdef>sd_event_inotify_handler_t <parameter>handler</parameter></paramdef>
        <paramdef>void *<parameter>userdata</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>int <function>sd_event_source_get_inotify_mask</function></funcdef>
        <paramdef>sd_event_source *<parameter>source</parameter></paramdef>
        <paramdef>uint32_t *<parameter>mask</parameter></paramdef>
      </funcprototype>

    </funcsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><function>sd_event_add_inotify()</function> adds a new <citerefentry
    project='man-pages'><refentrytitle>inotify</refentrytitle><manvolnum>7</manvolnum></citerefentry> file system inode
    event source 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 <parameter>path</parameter>
    parameter specifies the path of the file system inode to watch. The <parameter>handler</parameter> must reference a
    function to call when the inode changes. 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>struct
    inotify_event</structname> structure containing information about the inode event. The <parameter>mask</parameter>
    parameter specifies which types of inode events to watch specifically. It must contain an OR-ed combination of
    <constant>IN_ACCESS</constant>, <constant>IN_ATTRIB</constant>, <constant>IN_CLOSE_WRITE</constant>, … flags. See
    <citerefentry project='man-pages'><refentrytitle>inotify</refentrytitle><manvolnum>7</manvolnum></citerefentry> for
    further information.</para>

    <para>If multiple event sources are installed for the same inode the backing inotify watch descriptor is
    automatically shared. The mask parameter may contain any flag defined by the inotify API, with the exception of
    <constant>IN_MASK_ADD</constant>.</para>

    <para>The handler is enabled continuously (<constant>SD_EVENT_ON</constant>), but this may be changed with
    <citerefentry><refentrytitle>sd_event_source_set_enabled</refentrytitle><manvolnum>3</manvolnum></citerefentry>. Alternatively,
    the <constant>IN_ONESHOT</constant> mask flag may be used to request <constant>SD_EVENT_ONESHOT</constant> mode.
    If the handler function returns a negative error code, it will be disabled after the invocation, even if the
    <constant>SD_EVENT_ON</constant> mode was requested before.
    </para>

    <para>As a special limitation the priority of inotify event sources may only be altered (see
    <citerefentry><refentrytitle>sd_event_source_set_priority</refentrytitle><manvolnum>3</manvolnum></citerefentry>)
    in the time between creation of the event source object with <function>sd_event_add_inotify()</function> and the
    beginning of the next event loop iteration. Attempts of changing the priority any later will be refused. Consider
    freeing and allocating a new inotify event source to change the priority at that point.</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 disabling
    it with
    <citerefentry><refentrytitle>sd_event_source_set_enabled</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>

    <para>If the second parameter of <function>sd_event_add_inotify()</function> 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_inotify()</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>.</para>

    <para><function>sd_event_source_get_inotify_mask()</function> retrieves the configured inotify watch mask of an
    event source created previously with <function>sd_event_add_inotify()</function>. It takes the event source object
    as the <parameter>source</parameter> parameter and a pointer to a <type>uint32_t</type> variable to return the mask
    in.</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. This includes specifying a mask with
          <constant>IN_MASK_ADD</constant> set.</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>

        <varlistentry>
          <term><constant>-EDOM</constant></term>

          <listitem><para>The passed event source is not an inotify process event source.</para></listitem>
        </varlistentry>

      </variablelist>
    </refsect2>
  </refsect1>

  <refsect1>
    <title>Examples</title>

    <example>
      <title>A simple program that uses inotify to monitor one or two directories</title>

      <programlisting><xi:include href="inotify-watch-tmp.c" parse="text" /></programlisting>
    </example>
  </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_defer</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_event_add_child</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 project='man-pages'><refentrytitle>waitid</refentrytitle><manvolnum>2</manvolnum></citerefentry>
    </para>
  </refsect1>

</refentry>
