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

  <refentryinfo>
    <title>sd_event_new</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>sd_event_new</refentrytitle>
    <manvolnum>3</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>sd_event_new</refname>
    <refname>sd_event_default</refname>
    <refname>sd_event_ref</refname>
    <refname>sd_event_unref</refname>
    <refname>sd_event_unrefp</refname>
    <refname>sd_event_get_tid</refname>
    <refname>sd_event</refname>

    <refpurpose>Acquire and release an event loop object</refpurpose>
  </refnamediv>

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

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

      <funcprototype>
        <funcdef>int <function>sd_event_new</function></funcdef>
        <paramdef>sd_event **<parameter>event</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>int <function>sd_event_default</function></funcdef>
        <paramdef>sd_event **<parameter>event</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>sd_event *<function>sd_event_ref</function></funcdef>
        <paramdef>sd_event *<parameter>event</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>sd_event *<function>sd_event_unref</function></funcdef>
        <paramdef>sd_event *<parameter>event</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>void <function>sd_event_unrefp</function></funcdef>
        <paramdef>sd_event **<parameter>event</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>int <function>sd_event_get_tid</function></funcdef>
        <paramdef>sd_event *<parameter>event</parameter></paramdef>
        <paramdef>pid_t *<parameter>tid</parameter></paramdef>
      </funcprototype>

    </funcsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><function>sd_event_new()</function> allocates a new event
    loop object. The event loop object is returned in the
    <parameter>event</parameter> parameter. After use, drop
    the returned reference with
    <function>sd_event_unref()</function>. When the last reference is
    dropped, the object is freed.</para>

    <para><function>sd_event_default()</function> acquires a reference
    to the default event loop object of the calling thread, possibly
    allocating a new object if no default event loop object has been
    allocated yet for the thread. After use, drop the returned
    reference with <function>sd_event_unref()</function>. When the
    last reference is dropped, the event loop is freed. If this
    function is called while the object returned from a previous call
    from the same thread is still referenced, the same object is
    returned again, but the reference is increased by one. It is
    recommended to use this call instead of
    <function>sd_event_new()</function> in order to share event loop
    objects between various components that are dispatched in the same
    thread. All threads have exactly either zero or one default event loop
    objects associated, but never more.</para>

    <para>After allocating an event loop object, add event sources to
    it with
    <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_child</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
    <citerefentry><refentrytitle>sd_event_add_inotify</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
    <citerefentry><refentrytitle>sd_event_add_defer</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
    <citerefentry><refentrytitle>sd_event_add_post</refentrytitle><manvolnum>3</manvolnum></citerefentry> or
    <citerefentry><refentrytitle>sd_event_add_exit</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
    and then execute the event loop using
    <citerefentry><refentrytitle>sd_event_loop</refentrytitle><manvolnum>3</manvolnum></citerefentry>.</para>

    <para><function>sd_event_ref()</function> increases the reference
    count of the specified event loop object by one.</para>

    <para><function>sd_event_unref()</function> decreases the
    reference count of the specified event loop object by one. If
    the count hits zero, the object is freed. Note that it
    is freed regardless of whether it is the default event loop object for a
    thread or not. This means that allocating an event loop with
    <function>sd_event_default()</function>, then releasing it, and
    then acquiring a new one with
    <function>sd_event_default()</function> will result in two
    distinct objects. Note that, in order to free an event loop object,
    all remaining event sources of the event loop also need to be
    freed as each keeps a reference to it.</para>

    <para><function>sd_event_unrefp()</function> is similar to
    <function>sd_event_unref()</function> but takes a pointer to a
    pointer to an <type>sd_event</type> object. This call is useful in
    conjunction with GCC's and LLVM's <ulink
    url="https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html">Clean-up
    Variable Attribute</ulink>. Note that this function is defined as
    inline function. Use a declaration like the following,
    in order to allocate an event loop object that is freed
    automatically as the code block is left:</para>

    <programlisting>{
        __attribute__((cleanup(sd_event_unrefp))) sd_event *event = NULL;
        int r;
        …
        r = sd_event_default(&amp;event);
        if (r &lt; 0)
                fprintf(stderr, "Failed to allocate event loop: %s\n", strerror(-r));
        …
}</programlisting>

    <para><function>sd_event_ref()</function>,
    <function>sd_event_unref()</function> and
    <function>sd_event_unrefp()</function> execute no operation if the
    passed in event loop object is <constant>NULL</constant>.</para>

    <para><function>sd_event_get_tid()</function> retrieves the thread
    identifier ("TID") of the thread the specified event loop object
    is associated with. This call is only supported for event loops
    allocated with <function>sd_event_default()</function>, and
    returns the identifier for the thread the event loop is the
    default event loop of. See <citerefentry
    project='man-pages'><refentrytitle>gettid</refentrytitle><manvolnum>2</manvolnum></citerefentry>
    for more information on thread identifiers.</para>
  </refsect1>

  <refsect1>
    <title>Return Value</title>

    <para>On success, <function>sd_event_new()</function>, <function>sd_event_default()</function> and
    <function>sd_event_get_tid()</function> return 0 or a positive integer. On failure, they return a
    negative errno-style error code. <function>sd_event_ref()</function> always returns a pointer to the
    event loop object passed in. <function>sd_event_unref()</function> always returns
    <constant>NULL</constant>.</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 the object.</para></listitem>
        </varlistentry>

        <varlistentry>
          <term><constant>-EMFILE</constant></term>

          <listitem><para>The maximum number of event loops has been allocated.</para></listitem>

        </varlistentry>

        <varlistentry>
          <term><constant>-ENXIO</constant></term>

          <listitem><para><function>sd_event_get_tid()</function> was invoked on an event loop object that
          was not allocated with <function>sd_event_default()</function>.</para></listitem>
        </varlistentry>

      </variablelist>
    </refsect2>
  </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_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_child</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_event_add_inotify</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_event_add_defer</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry><refentrytitle>sd_event_run</refentrytitle><manvolnum>3</manvolnum></citerefentry>,
      <citerefentry project='man-pages'><refentrytitle>gettid</refentrytitle><manvolnum>2</manvolnum></citerefentry>
    </para>
  </refsect1>

</refentry>
