2015-06-17 16:11:11 +03:00
<?xml version='1.0'?> <!-- * - nxml - * -->
2019-03-14 16:40:58 +03:00
< !DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
2015-06-17 16:11:11 +03:00
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
<!ENTITY % entities SYSTEM "custom-entities.ent" >
%entities;
]>
2020-11-09 07:23:58 +03:00
<!-- SPDX - License - Identifier: LGPL - 2.1 - or - later -->
2015-06-17 16:11:11 +03:00
<refentry id= "libudev"
xmlns:xi="http://www.w3.org/2001/XInclude">
<refentryinfo >
<title > libudev</title>
<productname > systemd</productname>
</refentryinfo>
<refmeta >
<refentrytitle > libudev</refentrytitle>
<manvolnum > 3</manvolnum>
</refmeta>
<refnamediv >
<refname > libudev</refname>
<refpurpose > API for enumerating and introspecting local devices</refpurpose>
</refnamediv>
<refsynopsisdiv >
<funcsynopsis >
<funcsynopsisinfo > #include < libudev.h> </funcsynopsisinfo>
</funcsynopsis>
<cmdsynopsis >
<command > pkg-config --cflags --libs libudev</command>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1 >
<title > Description</title>
2022-04-12 12:30:28 +03:00
<para > <filename > libudev.h</filename> provides an API to introspect and enumerate devices on the local
system. This library is supported, but should not be used in new projects. Please see
<citerefentry > <refentrytitle > sd-device</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry> for an
equivalent replacement with a more modern API.</para>
2015-06-17 16:11:11 +03:00
<para > All functions require a libudev context to operate. This
2023-01-15 20:04:35 +03:00
context can be created via
2015-06-17 16:11:11 +03:00
<citerefentry > <refentrytitle > udev_new</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry> .
It is used to track library state and link objects together. No
global state is used by libudev, everything is always linked to
2018-08-03 17:43:30 +03:00
a udev context.</para>
<xi:include href= "threads-aware.xml" xpointer= "strict" />
2023-03-07 22:25:58 +03:00
<xi:include href= "threads-aware.xml" xpointer= "getenv" />
2015-06-17 16:11:11 +03:00
<para > To introspect a local device on a system, a udev device
object can be created via
<citerefentry > <refentrytitle > udev_device_new_from_syspath</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry>
2016-07-12 13:52:11 +03:00
and friends. The device object allows one to query current state,
2015-06-17 16:11:11 +03:00
read and write attributes and lookup properties of the device in
question.</para>
<para > To enumerate local devices on the system, an enumeration
object can be created via
<citerefentry > <refentrytitle > udev_enumerate_new</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry> .</para>
<para > To monitor the local system for hotplugged or unplugged
devices, a monitor can be created via
<citerefentry > <refentrytitle > udev_monitor_new_from_netlink</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry> .</para>
<para > Whenever libudev returns a list of objects, the
<citerefentry > <refentrytitle > udev_list_entry</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry>
API should be used to iterate, access and modify those lists.</para>
<para > Furthermore, libudev also exports legacy APIs that should
not be used by new software (and as such are not documented as
2014-08-03 09:11:12 +04:00
part of this manual). This includes the hardware database known
2015-06-17 16:11:11 +03:00
as <constant > udev_hwdb</constant> (please use the new
<citerefentry > <refentrytitle > sd-hwdb</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry>
API instead) and the <constant > udev_queue</constant> object to
2014-08-03 09:11:12 +04:00
query the udev daemon (which should not be used by new software
2015-06-17 16:11:11 +03:00
at all).</para>
</refsect1>
<refsect1 >
<title > See Also</title>
<para >
<citerefentry > <refentrytitle > udev_new</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry> ,
<citerefentry > <refentrytitle > udev_device_new_from_syspath</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry> ,
<citerefentry > <refentrytitle > udev_enumerate_new</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry> ,
<citerefentry > <refentrytitle > udev_monitor_new_from_netlink</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry> ,
<citerefentry > <refentrytitle > udev_list_entry</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry> ,
<citerefentry > <refentrytitle > systemd</refentrytitle> <manvolnum > 1</manvolnum> </citerefentry> ,
<citerefentry > <refentrytitle > sd-device</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry> ,
<citerefentry > <refentrytitle > sd-hwdb</refentrytitle> <manvolnum > 3</manvolnum> </citerefentry> ,
<citerefentry project= 'die-net' > <refentrytitle > pkg-config</refentrytitle> <manvolnum > 1</manvolnum> </citerefentry>
</para>
</refsect1>
</refentry>