UDEV_ENUMERATE_ADD_NOMATCH_SYSATTR(3)
π udev_enumerate_add_match_is_initialized(3) π
okay bestie so this page is a whole family of libudev functions that all hang out together, and the manual name for the whole squad is udev_enumerate_add_match_subsystem, udev_enumerate_add_nomatch_subsystem, udev_enumerate_add_match_sysattr, udev_enumerate_add_nomatch_sysattr, udev_enumerate_add_match_property, udev_enumerate_add_match_sysname, udev_enumerate_add_match_tag, udev_enumerate_add_match_parent, udev_enumerate_add_match_is_initialized β page UDEV_ENUMERATE_ADD_MATCH_IS_INITIALIZED(3) fr fr, that's the one you're reading rn π
β¨ NAME β¨
udev_enumerate_add_match_subsystem, udev_enumerate_add_nomatch_subsystem, udev_enumerate_add_match_sysattr, udev_enumerate_add_nomatch_sysattr, udev_enumerate_add_match_property, udev_enumerate_add_match_sysname, udev_enumerate_add_match_tag, udev_enumerate_add_match_parent, udev_enumerate_add_match_is_initialized β Modify filters. That's it, that's the whole vibe. They tweak the filter set. π
So like, nine functions, one page, one mission: filters. Here's the roll call so you know who's who π
udev_enumerate_add_match_subsystemβ adds a match filter on a subsystemudev_enumerate_add_nomatch_subsystemβ adds a nomatch filter on a subsystem (the "not this one" twin π)udev_enumerate_add_match_sysattrβ adds a match filter on a sysattr, with avalueudev_enumerate_add_nomatch_sysattrβ adds a nomatch filter on a sysattr, with avalueudev_enumerate_add_match_propertyβ adds a match filter on a property, with avalueudev_enumerate_add_match_sysnameβ adds a match filter on a sysnameudev_enumerate_add_match_tagβ adds a match filter on a tagudev_enumerate_add_match_parentβ adds a match filter on a parent, and parent is astruct udev_device *udev_enumerate_add_match_is_initializedβ adds a match filter for is_initialized, no extra args, she's low maintenance π«Ά
π¦ SYNOPSIS π¦
grab the header first, always:
#include <libudev.h>
then, one by one, here's every single signature verbatim so you can't mess it up π
int
udev_enumerate_add_match_subsystem(struct udev_enumerate *udev_enumerate,
const char *subsystem);
int
udev_enumerate_add_nomatch_subsystem(struct udev_enumerate *udev_enumerate,
const char *subsystem);
int
udev_enumerate_add_match_sysattr(struct udev_enumerate *udev_enumerate,
const char *sysattr,
const char *value);
int
udev_enumerate_add_nomatch_sysattr(struct udev_enumerate *udev_enumerate,
const char *sysattr,
const char *value);
int
udev_enumerate_add_match_property(struct udev_enumerate *udev_enumerate,
const char *property,
const char *value);
int
udev_enumerate_add_match_sysname(struct udev_enumerate *udev_enumerate,
const char *sysname);
int udev_enumerate_add_match_tag(struct udev_enumerate *udev_enumerate,
const char *tag);
int
udev_enumerate_add_match_parent(struct udev_enumerate *udev_enumerate,
struct udev_device *parent);
int
udev_enumerate_add_match_is_initialized(struct udev_enumerate *udev_enumerate);
like yes the indentation is a whole situation π but it's giving "I typed this at 3am" and honestly? iconic. Copy it exactly, don't @ me.
π RETURN VALUE π
okay so the good news is every single one of these is on the same energy:
On success, udev_enumerate_add_match_subsystem(), udev_enumerate_add_nomatch_subsystem(), udev_enumerate_add_match_sysattr(), udev_enumerate_add_nomatch_sysattr(), udev_enumerate_add_match_property(), udev_enumerate_add_match_sysname(), udev_enumerate_add_match_tag(), udev_enumerate_add_match_parent() and udev_enumerate_add_match_is_initialized() return an integer greater than, or equal to, 0.
that's the whole return value section, bestie. >= 0 = slay. that's the vibe check β
ngl this is the chillest RETURN VALUE ever written β no weird negative cases spelled out here, no secret codes, just "greater than, or equal to, 0" and we move on. read it, respect it, don't add stuff that isn't there π
πΈ HISTORY πΈ
udev_enumerate_add_match_subsystem(), udev_enumerate_add_nomatch_subsystem(), udev_enumerate_add_match_sysattr(), udev_enumerate_add_nomatch_sysattr(), udev_enumerate_add_match_property(), udev_enumerate_add_match_sysname(), udev_enumerate_add_match_tag(), udev_enumerate_add_match_parent(), and udev_enumerate_add_match_is_initialized() were added in version 221.
so the whole friend group arrived together in 221 β a package deal, no stragglers, periodt π β¨
π§ SEE ALSO π§
go read these next, they're the rest of the lore π₯
udev_new(3)udev_device_new_from_syspath(3)udev_enumerate_new(3)udev_enumerate_scan_devices(3)udev_monitor_new_from_netlink(3)udev_list_entry(3)systemd(1)
and that's the page!! π stay hydrated, keep your filters tidy, and remember: this whole thing is from systemd 261.3 β UDEV_ENU...UBSYSTEM(3), your fave truncated title, love her for that ππ¦ no cap, go build something cute β¨
π¦ where this page comes from
- ubuntu stonking: libudev-dev 261.3-0ubuntu3 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms