libudev-enumerate.c revision c32eb440bab953a0169cd207dfef5cad16dfb340
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering This file is part of systemd.
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering Copyright 2008-2012 Kay Sievers <kay@vrfy.org>
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering Copyright 2015 Tom Gundersen <teg@jklm.no>
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering systemd is free software; you can redistribute it and/or modify it
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering under the terms of the GNU Lesser General Public License as published by
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering the Free Software Foundation; either version 2.1 of the License, or
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering (at your option) any later version.
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering systemd is distributed in the hope that it will be useful, but
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering WITHOUT ANY WARRANTY; without even the implied warranty of
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering Lesser General Public License for more details.
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering You should have received a copy of the GNU Lesser General Public License
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering along with systemd; If not, see <http://www.gnu.org/licenses/>.
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering * SECTION:libudev-enumerate
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering * @short_description: lookup and sort sys devices
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering * Lookup devices in the sys filesystem, filter devices by properties,
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering * and return a sorted list of devices.
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering * udev_enumerate:
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering * Opaque object representing one device lookup/sort context.
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering * udev_enumerate_new:
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering * @udev: udev library context
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering * Create an enumeration context to scan /sys.
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering * Returns: an enumeration context.
6c12b52e19640747e96f89d85422941a23dc6b29Lennart Poettering_public_ struct udev_enumerate *udev_enumerate_new(struct udev *udev) {
if (!udev_enumerate) {
return NULL;
errno = -r;
return NULL;
return udev_enumerate;
if (udev_enumerate)
return udev_enumerate;
return NULL;
_public_ struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enumerate *udev_enumerate) {
const char *syspath;
errno = -r;
return NULL;
_public_ int udev_enumerate_add_match_subsystem(struct udev_enumerate *udev_enumerate, const char *subsystem) {
_public_ int udev_enumerate_add_nomatch_subsystem(struct udev_enumerate *udev_enumerate, const char *subsystem) {
_public_ int udev_enumerate_add_match_sysattr(struct udev_enumerate *udev_enumerate, const char *sysattr, const char *value) {
_public_ int udev_enumerate_add_nomatch_sysattr(struct udev_enumerate *udev_enumerate, const char *sysattr, const char *value) {
_public_ int udev_enumerate_add_match_property(struct udev_enumerate *udev_enumerate, const char *property, const char *value) {
_public_ int udev_enumerate_add_match_parent(struct udev_enumerate *udev_enumerate, struct udev_device *parent) {
if (!parent)
_public_ int udev_enumerate_add_match_sysname(struct udev_enumerate *udev_enumerate, const char *sysname) {
_public_ int udev_enumerate_add_syspath(struct udev_enumerate *udev_enumerate, const char *syspath) {
if (!syspath)