libdevattr & udevd - add man pages
authorAlex Hornung <ahornung@gmail.com>
Sun, 11 Jul 2010 19:57:13 +0000 (20:57 +0100)
committerAlex Hornung <ahornung@gmail.com>
Sun, 11 Jul 2010 21:05:59 +0000 (22:05 +0100)
gnu/usr.bin/groff/tmac/mdoc.local
lib/libdevattr/Makefile
lib/libdevattr/devattr.3 [new file with mode: 0644]
lib/libdevattr/udev.3 [new file with mode: 0644]
lib/libdevattr/udev_device.3 [new file with mode: 0644]
lib/libdevattr/udev_enumerate.3 [new file with mode: 0644]
lib/libdevattr/udev_monitor.3 [new file with mode: 0644]
sbin/udevd/Makefile
sbin/udevd/udevd.8 [new file with mode: 0644]
usr.bin/mandoc/lib.in

index 2798c99..108c35d 100644 (file)
@@ -40,6 +40,7 @@
 .ds doc-str-Lb-libcam           Common Access Method User Library (libcam, \-lcam)
 .ds doc-str-Lb-libcaps          CAPS IPC Library (libcaps, \-lcaps)
 .ds doc-str-Lb-libcipher        FreeSec Crypt Library (libcipher, \-lcipher)
+.ds doc-str-Lb-libdevattr      Device attribute and event library (libdevattr \-ldevattr)
 .ds doc-str-Lb-libdevinfo       Device and Resource Information Utility Library (libdevinfo, \-ldevinfo)
 .ds doc-str-Lb-libdevstat       Device Statistics Library (libdevstat, \-ldevstat)
 .ds doc-str-Lb-libfetch         File Transfer Library (libfetch, \-lfetch)
index aeecb2b..c60d16a 100644 (file)
@@ -7,6 +7,60 @@ WARNS?=        6
 LDADD+=        -lprop
 DPADD+=        ${LIBPROP}
 
-NOMAN=
+MAN=   devattr.3 udev.3 udev_device.3 udev_enumerate.3 udev_monitor.3
+MLINKS+=       udev.3  udev_new.3
+MLINKS+=       udev.3  udev_ref.3
+MLINKS+=       udev.3  udev_unref.3
+MLINKS+=       udev.3  udev_get_dev_path.3
+MLINKS+=       udev.3  udev_set_userdata.3
+MLINKS+=       udev.3  udev_get_userdata.3
+
+MLINKS+=       udev_device.3   udev_device_ref.3
+MLINKS+=       udev_device.3   udev_device_unref.3
+MLINKS+=       udev_device.3   udev_device_get_dictionary.3
+MLINKS+=       udev_device.3   udev_device_get_udev.3
+MLINKS+=       udev_device.3   udev_device_get_action.3
+MLINKS+=       udev_device.3   udev_device_get_devnum.3
+MLINKS+=       udev_device.3   udev_device_get_devnode.3
+MLINKS+=       udev_device.3   udev_device_get_driver.3
+MLINKS+=       udev_device.3   udev_device_get_subsystem.3
+MLINKS+=       udev_device.3   udev_device_get_kptr.3
+MLINKS+=       udev_device.3   udev_device_get_major.3
+MLINKS+=       udev_device.3   udev_device_get_minor.3
+MLINKS+=       udev_device.3   udev_device_get_property_value.3
+
+MLINKS+=       udev_enumerate.3        udev_enumerate_new.3
+MLINKS+=       udev_enumerate.3        udev_enumerate_ref.3
+MLINKS+=       udev_enumerate.3        udev_enumerate_unref.3
+MLINKS+=       udev_enumerate.3        udev_enumerate_get_udev.3
+MLINKS+=       udev_enumerate.3        udev_enumerate_scan_devices.3
+MLINKS+=       udev_enumerate.3        udev_enumerate_get_array.3
+MLINKS+=       udev_enumerate.3        udev_enumerate_get_list_entry.3
+MLINKS+=       udev_enumerate.3        udev_list_entry_get_next.3
+MLINKS+=       udev_enumerate.3        udev_list_entry_foreach.3
+MLINKS+=       udev_enumerate.3        udev_list_entry_get_dictionary.3
+MLINKS+=       udev_enumerate.3        udev_list_entry_get_device.3
+MLINKS+=       udev_enumerate.3        udev_enumerate_add_match_subsystem.3
+MLINKS+=       udev_enumerate.3        udev_enumerate_add_nomatch_subsystem.3
+MLINKS+=       udev_enumerate.3        udev_enumerate_add_match_expr.3
+MLINKS+=       udev_enumerate.3        udev_enumerate_add_match_property.3
+MLINKS+=       udev_enumerate.3        udev_enumerate_add_nomatch_expr.3
+MLINKS+=       udev_enumerate.3        udev_enumerate_add_nomatch_property.3
+MLINKS+=       udev_enumerate.3        udev_enumerate_add_match_regex.3
+MLINKS+=       udev_enumerate.3        udev_enumerate_add_nomatch_regex.3
+
+MLINKS+=       udev_monitor.3  udev_monitor_new.3
+MLINKS+=       udev_monitor.3  udev_monitor_ref.3
+MLINKS+=       udev_monitor.3  udev_monitor_unref.3
+MLINKS+=       udev_monitor.3  udev_monitor_get_udev.3
+MLINKS+=       udev_monitor.3  udev_monitor_get_fd.3
+MLINKS+=       udev_monitor.3  udev_monitor_receive_device.3
+MLINKS+=       udev_monitor.3  udev_monitor_enable_receiving.3
+MLINKS+=       udev_monitor.3  udev_monitor_filter_add_match_subsystem_devtype.3
+MLINKS+=       udev_monitor.3  udev_monitor_filter_add_match_expr.3
+MLINKS+=       udev_monitor.3  udev_monitor_filter_add_nomatch_expr.3
+MLINKS+=       udev_monitor.3  udev_monitor_filter_add_match_regex.3
+MLINKS+=       udev_monitor.3  udev_monitor_filter_add_nomatch_regex.3
+
 
 .include <bsd.lib.mk>
diff --git a/lib/libdevattr/devattr.3 b/lib/libdevattr/devattr.3
new file mode 100644 (file)
index 0000000..1945a6c
--- /dev/null
@@ -0,0 +1,56 @@
+.\"
+.\" Copyright (c) 2010 The DragonFly Project.  All rights reserved.
+.\" 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in
+.\"    the documentation and/or other materials provided with the
+.\"    distribution.
+.\" 3. Neither the name of The DragonFly Project nor the names of its
+.\"    contributors may be used to endorse or promote products derived
+.\"    from this software without specific, prior written permission.
+.\" 
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
+.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd July 11, 2010
+.Dt DEVATTR 3
+.Os
+.Sh NAME
+.Nm devattr
+.Nd device properties and event notification
+.Sh LIBRARY
+.Lb libdevattr
+.Sh DESCRIPTION
+The
+.Xr devattr 3
+library provides an interface to receive event notifications related to device
+attach and detach events, as well as an interface to query system devices for
+their properties.
+.Sh COMPATIBILITY
+The
+.Xr devattr 3
+library offers a set of functions that is aimed to be as compatible as possible
+with Linux'libudev, but is not limited by this and also provides a different set
+of functionality.
+.Sh SEE ALSO
+.Xr udev 3 ,
+.Xr udev_device 3 ,
+.Xr udev_enumerate 3 ,
+.Xr udev_monitor 3 ,
+.Xr udevd 8
\ No newline at end of file
diff --git a/lib/libdevattr/udev.3 b/lib/libdevattr/udev.3
new file mode 100644 (file)
index 0000000..93fa9eb
--- /dev/null
@@ -0,0 +1,97 @@
+.\"
+.\" Copyright (c) 2010 The DragonFly Project.  All rights reserved.
+.\" 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in
+.\"    the documentation and/or other materials provided with the
+.\"    distribution.
+.\" 3. Neither the name of The DragonFly Project nor the names of its
+.\"    contributors may be used to endorse or promote products derived
+.\"    from this software without specific, prior written permission.
+.\" 
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
+.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd July 11, 2010
+.Dt UDEV 3
+.Os
+.Sh NAME
+.Nm udev_new ,
+.Nm udev_ref ,
+.Nm udev_unref ,
+.Nm udev_get_dev_path ,
+.Nm udev_set_userdata ,
+.Nm udev_get_userdata
+.Nd general udev functions
+.Sh LIBRARY
+.Lb libdevattr
+.Sh SYNOPSIS
+.In devattr.h
+.Ft struct udev *
+.Fn udev_new "void"
+.Ft struct udev *
+.Fn udev_ref "struct udev *udev_ctx"
+.Ft void
+.Fn udev_unref "struct udev *udev_ctx"
+.Ft const char *
+.Fn udev_get_dev_path "struct udev *udev_ctx"
+.Ft void
+.Fn udev_set_userdata "struct udev *udev_ctx" " void *userdata"
+.Ft void *
+.Fn udev_get_userdata "struct udev *udev_ctx"
+.Sh DESCRIPTION
+The
+.Fn udev_new
+function returns a new udev context.
+This is needed as a context for all other libdevattr functions.
+The returned context has a refcount of 1.
+This function returns
+.Dv NULL
+if no udev context could be created, which usually happens when
+the udevd daemon is not running.
+.Pp
+The
+.Fn udev_ref
+and
+.Fn udev_unref
+functions increase or decrease the reference count on a udev object respectively.
+When the reference count drops to 0, the object is automatically destroyed.
+The
+.Fn udev_ref
+function returns the same object that was passed in.
+.Pp
+The
+.Fn udev_get_dev_path
+function returns the path to the system device directory.
+.Pp
+The
+.Fn udev_set_userdata
+function allows the consumer to associate some
+.Fa userdata
+to the specified
+.Fa udev_ctx .
+The
+.Fn udev_get_userdata
+function returns the currently associated user data.
+.Sh SEE ALSO
+.Xr devattr 3 ,
+.Xr udev_device 3 ,
+.Xr udev_enumerate 3 ,
+.Xr udev_monitor 3 ,
+.Xr udevd 8
\ No newline at end of file
diff --git a/lib/libdevattr/udev_device.3 b/lib/libdevattr/udev_device.3
new file mode 100644 (file)
index 0000000..00c43df
--- /dev/null
@@ -0,0 +1,167 @@
+.\"
+.\" Copyright (c) 2010 The DragonFly Project.  All rights reserved.
+.\" 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in
+.\"    the documentation and/or other materials provided with the
+.\"    distribution.
+.\" 3. Neither the name of The DragonFly Project nor the names of its
+.\"    contributors may be used to endorse or promote products derived
+.\"    from this software without specific, prior written permission.
+.\" 
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
+.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd July 11, 2010
+.Dt UDEV_DEVICE 3
+.Os
+.Sh NAME
+.Nm udev_device_ref ,
+.Nm udev_device_unref ,
+.Nm udev_device_get_dictionary ,
+.Nm udev_device_get_udev ,
+.Nm udev_device_get_action ,
+.Nm udev_device_get_devnum ,
+.Nm udev_device_get_devnode ,
+.Nm udev_device_get_driver ,
+.Nm udev_device_get_subsystem ,
+.Nm udev_device_get_kptr ,
+.Nm udev_device_get_major ,
+.Nm udev_device_get_minor ,
+.Nm udev_device_get_property_value
+.Nd udev device functions
+.Sh LIBRARY
+.Lb libdevattr
+.Sh SYNOPSIS
+.In devattr.h
+.Ft struct udev_device *
+.Fn udev_device_ref "struct udev_device *udev_device"
+.Ft void
+.Fn udev_device_unref "struct udev_device *udev_device"
+.Ft struct udev *
+.Fn udev_device_get_udev "struct udev_device *udev_device"
+.Ft prop_dictionary_t
+.Fn udev_device_get_dictionary "struct udev_device *udev_device"
+.Ft const char *
+.Fn udev_device_get_action "struct udev_device *udev_device"
+.Ft dev_t
+.Fn udev_device_get_devnum "struct udev_device *udev_device"
+.Ft const char *
+.Fn udev_device_get_devnode "struct udev_device *udev_device"
+.Ft const char *
+.Fn udev_device_get_driver "struct udev_device *udev_device"
+.Ft const char *
+.Fn udev_device_get_subsystem "struct udev_device *udev_device"
+.Ft uint64_t
+.Fn udev_device_get_kptr "struct udev_device *udev_device"
+.Ft int32_t
+.Fn udev_device_get_major "struct udev_device *udev_device"
+.Ft int32_t
+.Fn udev_device_get_minor "struct udev_device *udev_device"
+.Ft const char *
+.Fn udev_device_get_property_value "struct udev_device *udev_device" "const char *key"
+.Sh DESCRIPTION
+The
+.Fn udev_device_ref
+and
+.Fn udev_device_unref
+functions increase or decrease the reference count on a
+.Fa udev_device
+object respectively.
+When the reference count drops to 0, the object is automatically destroyed.
+The
+.Fn udev_device_ref
+function returns the same object that was passed in.
+.Pp
+The
+.Fn udev_device_get_udev
+function returns the udev context in which the
+.Fa udev_device
+was created.
+.Pp
+The
+.Fn udev_device_get_dictionary
+function returns the raw
+.Xr prop_dictionary 3
+dictionary associated to the given
+.Fa udev_device .
+It returns
+.Dv NULL
+when no dictionary is associated to the device.
+.Pp
+The
+.Fn udev_device_get_action
+function returns the action, as a string, related to the
+.Fa udev_device .
+Possible actions are "add" for attach events, "remove" for detach events and
+"none" if the udev_device is not associated with a particular event.
+.Pp
+The
+.Fn udev_device_get_devnum ,
+.Fn udev_device_get_devnode ,
+.Fn udev_device_get_driver ,
+.Fn udev_device_get_subsystem ,
+.Fn udev_device_get_kptr ,
+.Fn udev_device_get_major
+and
+.Fn udev_device_get_minor
+function return some information of the device corresponding to the
+.Fa udev_device .
+The
+.Fn udev_device_get_devnum ,
+function returns the device number.
+The
+.Fn udev_device_get_devnode
+function returns the full path in the system to the given device.
+The returned string and errno are the same as for the
+.Xr devname 3
+function.
+The
+.Fn udev_device_get_driver
+and
+.Fn udev_device_get_subsystem
+functions return the driver name and subsystem of the device if available.
+Otherwise they return
+.Dv NULL .
+The
+.Fn udev_device_get_kptr ,
+.Fn udev_device_get_major
+and
+.Fn udev_device_get_minor
+functions return the kernel pointer to the associated cdev_t, the major and the
+minor number, respectively.
+.Pp
+The
+.Fn udev_device_get_property_value
+function returns the value for the
+.Fa udev_device
+for the specified property
+.Fa key .
+It returns
+.Dv NULL
+if the specified
+.Fa udev_device
+has no property for
+.Fa key .
+.Sh SEE ALSO
+.Xr devattr 3 ,
+.Xr udev 3 ,
+.Xr udev_enumerate 3 ,
+.Xr udev_monitor 3 ,
+.Xr udevd 8
\ No newline at end of file
diff --git a/lib/libdevattr/udev_enumerate.3 b/lib/libdevattr/udev_enumerate.3
new file mode 100644 (file)
index 0000000..ebab979
--- /dev/null
@@ -0,0 +1,224 @@
+.\"
+.\" Copyright (c) 2010 The DragonFly Project.  All rights reserved.
+.\" 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in
+.\"    the documentation and/or other materials provided with the
+.\"    distribution.
+.\" 3. Neither the name of The DragonFly Project nor the names of its
+.\"    contributors may be used to endorse or promote products derived
+.\"    from this software without specific, prior written permission.
+.\" 
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
+.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd July 11, 2010
+.Dt UDEV_ENUMERATE 3
+.Os
+.Sh NAME
+.Nm udev_enumerate_new ,
+.Nm udev_enumerate_ref ,
+.Nm udev_enumerate_unref ,
+.Nm udev_enumerate_get_udev ,
+.Nm udev_enumerate_scan_devices ,
+.Nm udev_enumerate_get_array ,
+.Nm udev_enumerate_get_list_entry ,
+.Nm udev_list_entry_get_next ,
+.Nm udev_list_entry_foreach ,
+.Nm udev_list_entry_get_dictionary ,
+.Nm udev_list_entry_get_device ,
+.Nm udev_enumerate_add_match_subsystem ,
+.Nm udev_enumerate_add_nomatch_subsystem ,
+.Nm udev_enumerate_add_match_expr ,
+.Nm udev_enumerate_add_match_property ,
+.Nm udev_enumerate_add_nomatch_expr ,
+.Nm udev_enumerate_add_nomatch_property ,
+.Nm udev_enumerate_add_match_regex ,
+.Nm udev_enumerate_add_nomatch_regex
+.Nd device listing functions
+.Sh LIBRARY
+.Lb libdevattr
+.Sh SYNOPSIS
+.In devattr.h
+.Ft struct udev_enumerate *
+.Fn udev_enumerate_new "struct udev *udev_ctx"
+.Ft struct udev_enumerate *
+.Fn udev_enumerate_ref "struct udev *udev_ctx"
+.Ft void
+.Fn udev_enumerate_unref "struct udev *udev_ctx"
+.Ft struct udev *
+.Fn udev_enumerate_get_udev "struct udev *udev_ctx"
+.Ft int
+.Fn udev_enumerate_scan_devices "struct udev *udev_ctx"
+.Ft prop_array_t
+.Fn udev_enumerate_get_array "struct udev_enumerate *udev_enum"
+.Ft struct udev_list_entry *
+.Fn udev_enumerate_get_list_entry "struct udev_enumerate *udev_enum"
+.Ft struct udev_list_entry *
+.Fn udev_list_entry_get_next "struct udev_list_entry *list_entry"
+.Ft this is a macro....
+.Fn udev_list_entry_foreach 
+.Ft prop_dictionary_t 
+.Fn udev_list_entry_get_dictionary "struct udev_list_entry *list_entry"
+.Ft struct udev_device *
+.Fn udev_list_entry_get_device "struct udev_list_entry *list_entry"
+.Ft int
+.Fn udev_enumerate_add_match_subsystem "struct udev_enumerate *udev_enum" "const char *subsystem"
+.Ft int
+.Fn udev_enumerate_add_nomatch_subsystem "struct udev_enumerate *udev_enum" "const char *subsystem"
+.Ft int
+.Fn udev_enumerate_add_match_expr "struct udev_enumerate *udev_enum" "const char *key" "char *expr"
+.Ft int
+.Fn udev_enumerate_add_match_property "struct udev_enumerate *udev_enum" "const char *key" "const char *property"
+.Ft int
+.Fn udev_enumerate_add_nomatch_expr "struct udev_enumerate *udev_enum" "const char *key" "char *expr"
+.Ft int
+.Fn udev_enumerate_add_nomatch_property "struct udev_enumerate *udev_enum" "const char *key" "const char *property"
+.Ft int
+.Fn udev_enumerate_add_match_regex "struct udev_enumerate *udev_enum" "const char *key" "char *expr"
+.Ft int
+.Fn udev_enumerate_add_nomatch_regex "struct udev_enumerate *udev_enum" "const char *key" "char *expr"
+.Sh DESCRIPTION
+The
+.Fn udev_enumerate_new
+function creates a new udev_enumerate object in the specified udev context
+.Fa udev_ctx .
+It returns
+.Dv NULL
+if no such object could be created.
+.Pp
+The
+.Fn udev_enumerate_ref
+and
+.Fn udev_enumerate_unref
+functions increase or decrease the reference count on a
+.Fa udev_enumerate
+object respectively.
+When the reference count drops to 0, the object is automatically destroyed.
+The
+.Fn udev_enumerate_ref
+function returns the same object that was passed in.
+.Pp
+The
+.Fn udev_enumerate_get_udev
+function returns the udev context in which the
+.Fa udev_enumerate
+object was created.
+.Pp
+The
+.Fn udev_enumerate_scan_devices
+function retrieves the set of devices matching the set of expressions and
+properties specified with previous calls to
+.Fn udev_enumerate_add_match_*
+and
+.Fn udev_enumerate_add_nomatch_* .
+This function returns -1 in case of failure.
+.Pp
+The
+.Fn udev_enumerate_get_array
+function returns the raw
+.Xr prop_array 3
+array containing the whole set of devices retrieved by
+.Fn udev_enumerate_scan_devices .
+.Pp
+The
+.Fn udev_enumerate_get_list_entry
+function returns the first list entry of the specified
+.Fa udev_enumerate
+context or
+.Dv NULL
+if the set is empty.
+The
+.Fn udev_enumerate_list_entry_get_next
+returns the next list element after
+.Fa list_entry 
+or
+.Dv NULL
+if the current element was the last.
+The
+.Fn udev_list_entry_foreach
+is a convenient macro behaving as a for loop that will iterate the whole set
+starting at the list element specified by
+.Fa first_entry
+and setting
+.Fa list_entry
+to the current element.
+.Pp
+The
+.Fn udev_list_entry_get_device
+function returns the
+.Fa udev_device
+associated to the current list entry or
+.Dv NULL
+if no device is associated.
+.Pp
+The
+.Fn udev_list_entry_get_dictionary
+function returns the raw
+.Xr prop_dictionary 3
+dictionary associated to the list entry or
+.Dv NULL
+if no dictionary is associated.
+.Pp
+The
+.Fn udev_enumerate_add_match_subsystem
+and
+.Fn udev_enumerate_add_nomatch_subsystem
+functions add a filter to match or not to match, respectively, devices with the
+specified
+.Fa subsystem .
+These functions return a negative value if an error occured and 0 if no error
+occured.
+.Pp
+The
+.Fn udev_enumerate_add_match_expr ,
+.Fn udev_enumerate_add_match_property ,
+.Fn udev_enumerate_add_nomatch_expr
+and
+.Fn udev_enumerate_add_nomatch_property
+functions add a filter to match or not to match, respectively, devices with the
+specified
+.Fa key
+and value
+.Fa expr .
+The
+.Fa expr
+can contain wildcards.
+On error, these functions return a negative value and 0 if no error occured.
+.Pp
+The
+.Fn udev_enumerate_add_match_regex ,
+and
+.Fn udev_enumerate_add_nomatch_regex
+functions add a filter to match or not to match, respectively, devices with the
+specified
+.Fa key
+and value
+.Fa expr .
+The
+.Fa expr
+can contain regular expressions according to
+.Xr regex 3 .
+On error, these functions return a negative value and 0 if no error occured.
+.Sh SEE ALSO
+.Xr devattr 3 ,
+.Xr udev 3 ,
+.Xr udev_device 3 ,
+.Xr udev_monitor 3 ,
+.Xr udevd 8
\ No newline at end of file
diff --git a/lib/libdevattr/udev_monitor.3 b/lib/libdevattr/udev_monitor.3
new file mode 100644 (file)
index 0000000..cbd36e2
--- /dev/null
@@ -0,0 +1,182 @@
+.\"
+.\" Copyright (c) 2010 The DragonFly Project.  All rights reserved.
+.\" 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in
+.\"    the documentation and/or other materials provided with the
+.\"    distribution.
+.\" 3. Neither the name of The DragonFly Project nor the names of its
+.\"    contributors may be used to endorse or promote products derived
+.\"    from this software without specific, prior written permission.
+.\" 
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
+.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd July 11, 2010
+.Dt UDEV_MONITOR 3
+.Os
+.Sh NAME
+.Nm udev_monitor_new ,
+.Nm udev_monitor_ref ,
+.Nm udev_monitor_unref ,
+.Nm udev_monitor_get_udev ,
+.Nm udev_monitor_get_fd ,
+.Nm udev_monitor_receive_device ,
+.Nm udev_monitor_enable_receiving ,
+.Nm udev_monitor_filter_add_match_subsystem_devtype ,
+.Nm udev_monitor_filter_add_match_expr ,
+.Nm udev_monitor_filter_add_nomatch_expr ,
+.Nm udev_monitor_filter_add_match_regex ,
+.Nm udev_monitor_filter_add_nomatch_regex
+.Nd device event monitor functions
+.Sh LIBRARY
+.Lb libdevattr
+.Sh SYNOPSIS
+.In devattr.h
+.Ft struct udev_monitor *
+.Fn udev_monitor_new "struct udev *udev_ctx"
+.Ft struct udev_monitor *
+.Fn udev_monitor_ref "struct udev_monitor *udev_monitor"
+.Ft void
+.Fn udev_monitor_unref "struct udev_monitor *udev_monitor"
+.Ft struct udev *
+.Fn udev_monitor_get_udev "struct udev_monitor *udev_monitor"
+.Ft int
+.Fn udev_monitor_get_fd "struct udev_monitor *udev_monitor"
+.Ft struct udev_device *
+.Fn udev_monitor_receive_device "struct udev_monitor *udev_monitor"
+.Ft int
+.Fn udev_monitor_enable_receiving "struct udev_monitor *udev_monitor"
+.Ft int
+.Fn udev_monitor_filter_add_match_subsystem_devtype "struct udev_monitor *udev_monitor" "const char *subsystem" "const char *devtype"
+.Ft int
+.Fn udev_monitor_filter_add_match_expr "struct udev_monitor *udev_monitor" "const char *key" "char *expr"
+.Ft int
+.Fn udev_monitor_filter_add_nomatch_expr "struct udev_monitor *udev_monitor" "const char *key" "char *expr"
+.Ft int
+.Fn udev_monitor_filter_add_match_regex "struct udev_monitor *udev_monitor" "const char *key" "char *expr"
+.Ft int
+.Fn udev_monitor_filter_add_nomatch_regex "struct udev_monitor *udev_monitor" "const char *key" "char *expr"
+.Sh DESCRIPTION
+The
+.Fn udev_monitor_new
+function creates a new udev_monitor object in the specified udev context
+.Fa udev_ctx .
+It returns
+.Dv NULL
+if no such object could be created.
+.Pp
+The
+.Fn udev_monitor_ref
+and
+.Fn udev_monitor_unref
+functions increase or decrease the reference count on a
+.Fa udev_monitor
+object respectively.
+When the reference count drops to 0, the object is automatically destroyed and
+any remaining event socket closed.
+The
+.Fn udev_monitor_ref
+function returns the same object that was passed in.
+.Pp
+The
+.Fn udev_monitor_get_udev
+function returns the udev context in which the
+.Fa udev_monitor
+object was created.
+.Pp
+The
+.Fn udev_monitor_enable_receiving
+function enables receiving event notifications matching the filters added by
+previous calls to
+.Fn udev_monitor_filter_* .
+The function returns -1 if an error occurs.
+.Pp
+The
+.Fn udev_monitor_receive_device
+function reads a udev_device, once the monitor has been enabled for receiving.
+This call will block until a device is available.
+It returns
+.Dv NULL
+if a read error occurs.
+.Pp
+The
+.Fn udev_monitor_get_fd
+returns the raw file descriptor on which events are notified after a call to
+.Fn udev_monitor_enable_receiving .
+This file descriptor can then be used in conjunction with
+.Xr poll 2
+or
+.Xr kqueue 2 .
+The
+.Fn udev_monitor_receive_device
+call must be used to read from the descriptor.
+The function returns -1 if the socket is not connected.
+.Pp
+The
+.Fn udev_monitor_filter_add_match_subsystem_devtype
+function adds a filter that matches the given
+.Fa subsystem
+and/or
+.Fa devtype .
+If
+.Fa subsystem
+or
+.Fa devtype
+is
+.Dv NULL ,
+that argument is ignored.
+The function returns 0 in case of success and a negative value if an error
+occured.
+NOTE: Currently devtype matching is not implemented.
+.Pp
+The
+.Fn udev_monitor_filter_add_match_expr
+and
+.Fn udev_monitor_filter_add_nomatch_expr
+functions add a filter to match or not to match, respectively, devices with the
+specified
+.Fa key
+and value
+.Fa expr .
+The
+.Fa expr
+can contain wildcards.
+On error, these functions return a negative value and 0 if no error occured.
+.Pp
+The
+.Fn udev_monitor_filter_add_match_regex ,
+and
+.Fn udev_monitor_filter_add_nomatch_regex
+functions add a filter to match or not to match, respectively, devices with the
+specified
+.Fa key
+and value
+.Fa expr .
+The
+.Fa expr
+can contain regular expressions according to
+.Xr regex 3 .
+On error, these functions return a negative value and 0 if no error occured.
+.Sh SEE ALSO
+.Xr devattr 3 ,
+.Xr udev 3 ,
+.Xr udev_device 3 ,
+.Xr udev_enumerate 3 ,
+.Xr udevd 8
\ No newline at end of file
index 371a89b..46da07f 100644 (file)
@@ -2,6 +2,6 @@ PROG=   udevd
 SRCS=  udevd.c udevd_client.c udevd_monitor.c udevd_pdev.c 
 SRCS+= udevd_socket.c
 LDADD= -lprop -lpthread
-NOMAN=
+MAN=   udevd.8
 
 .include <bsd.prog.mk>
diff --git a/sbin/udevd/udevd.8 b/sbin/udevd/udevd.8
new file mode 100644 (file)
index 0000000..6d750e6
--- /dev/null
@@ -0,0 +1,62 @@
+.\"
+.\" Copyright (c) 2010 The DragonFly Project.  All rights reserved.
+.\" 
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in
+.\"    the documentation and/or other materials provided with the
+.\"    distribution.
+.\" 3. Neither the name of The DragonFly Project nor the names of its
+.\"    contributors may be used to endorse or promote products derived
+.\"    from this software without specific, prior written permission.
+.\" 
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
+.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
+.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
+.\"
+.Dd July 11, 2010
+.Dt UDEVD 8
+.Os
+.Sh NAME
+.Nm udevd
+.Nd udev daemon
+.Sh SYNOPSIS
+.Nm
+.Sh DESCRIPTION
+The
+.Nm
+daemon attaches itself to the kernel's udev interface,
+.Pa /dev/udev
+and provides an interface for the
+.Xr devattr 3
+library to access the kernel's udev events and device properties.
+The
+.Nm
+daemon has to be running for the
+.Xr devattr 3
+library to work.
+.Pp
+The
+.Nm
+utility creates the file
+.Pa /var/run/udevd.pid ,
+and stores its process id there.
+This can be used to kill
+.Nm .
+.Sh SEE ALSO
+.Xr devattr 3 ,
+.Xr rc.conf 5
\ No newline at end of file
index 8724834..b9b6989 100644 (file)
@@ -32,6 +32,7 @@ LINE("libcdk",                "Curses Development Kit Library (libcdk, \\-lcdk)")
 LINE("libcompat",      "Compatibility Library (libcompat, \\-lcompat)")
 LINE("libcrypt",       "Crypt Library (libcrypt, \\-lcrypt)")
 LINE("libcurses",      "Curses Library (libcurses, \\-lcurses)")
+LINE("libdevattr",     "Device attribute and event library (libdevattr, \\-ldevattr)")
 LINE("libedit",                "Command Line Editor Library (libedit, \\-ledit)")
 LINE("libevent",       "Event Notification Library (libevent, \\-levent)")
 LINE("libfetch",       "File Transfer Library for URLs (libfetch, \\-lfetch)")