<?xml version='1.0'?> <!--*-nxml-*-->
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
<!-- SPDX-License-Identifier: LGPL-2.1-or-later -->

<refentry id="udev_new"
  xmlns:xi="http://www.w3.org/2001/XInclude">

  <refentryinfo>
    <title>udev_new</title>
    <productname>systemd</productname>
  </refentryinfo>

  <refmeta>
    <refentrytitle>udev_new</refentrytitle>
    <manvolnum>3</manvolnum>
  </refmeta>

  <refnamediv>
    <refname>udev_new</refname>
    <refname>udev_ref</refname>
    <refname>udev_unref</refname>

    <refpurpose>Create, acquire and release a udev context object</refpurpose>
  </refnamediv>

  <refsynopsisdiv>
    <funcsynopsis>
      <funcsynopsisinfo>#include &lt;libudev.h&gt;</funcsynopsisinfo>

      <funcprototype>
        <funcdef>struct udev *<function>udev_new</function></funcdef>
        <paramdef><parameter>void</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>struct udev *<function>udev_ref</function></funcdef>
        <paramdef>struct udev *<parameter>udev</parameter></paramdef>
      </funcprototype>

      <funcprototype>
        <funcdef>struct udev *<function>udev_unref</function></funcdef>
        <paramdef>struct udev *<parameter>udev</parameter></paramdef>
      </funcprototype>

    </funcsynopsis>
  </refsynopsisdiv>

  <refsect1>
    <title>Description</title>

    <para><function>udev_new()</function> allocates a new udev context
    object and returns a pointer to it. This object is opaque and must
    not be accessed by the caller via different means than functions
    provided by libudev. Initially, the reference count of the context
    is 1. You can acquire further references, and drop gained references
    via <function>udev_ref()</function> and
    <function>udev_unref()</function>. Once the reference count hits 0,
    the context object is destroyed and freed.</para>
  </refsect1>

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

    <para>On success, <function>udev_new()</function> returns a pointer
    to the allocated udev context. On failure, <constant>NULL</constant>
    is returned. <function>udev_ref()</function> returns the argument
    that it was passed, unmodified. <function>udev_unref()</function>
    always returns <constant>NULL</constant>.</para>
  </refsect1>

  <refsect1>
    <title>See Also</title>

    <para>
      <citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>,
    </para>
  </refsect1>

</refentry>
