sd_device_enumerator_new
systemd
sd_device_enumerator_new
3
sd_device_enumerator_new
sd_device_enumerator_ref
sd_device_enumerator_unref
sd_device_enumerator_unrefp
Create, reference, and release a device enumerator object
#include <systemd/sd-device.h>
int sd_device_enumerator_new
sd_device_enumerator **ret
sd_device_enumerator* sd_device_enumerator_ref
sd_device_enumerator *enumerator
sd_device_enumerator* sd_device_enumerator_unref
sd_device_enumerator *enumerator
void sd_device_enumerator_unrefp
sd_device_enumerator **enumerator
Description
The sd_device_enumerator family of functions provides a way to iterate
over devices recognized by systemd-udevd8
. The enumerator allows filtering and matching devices by subsystem, properties and
other attributes.
sd_device_enumerator_new() creates a new device enumerator object and
stores the result in the pointer referenced by ret. Returns 0 on success,
or a negative errno-style error code on failure.
sd_device_enumerator_ref() increases the reference count of the
specified enumerator by one.
sd_device_enumerator_unref() decreases the reference count of the
enumerator by one. When the reference count reaches zero, the enumerator
object is destroyed and cannot be used anymore, so further calls to sd_device_enumerator_unref()
or sd_device_enumerator_unrefp() are illegal.
sd_device_enumerator_unrefp() is similar to
sd_device_enumerator_unref() but takes a pointer to a
pointer to an sd_device_enumerator object. This call is useful in
conjunction with GCC's and LLVM's Clean-up
Variable Attribute. Note that this function is defined as an
inline function. Use a declaration like the following, in order to
allocate a sd_device_enumerator object that is freed automatically as the code
block is left:
{
__attribute__((cleanup(sd_device_enumerator_unrefp))) sd_device_enumerator *enumerator = NULL;
int r;
…
r = sd_device_enumerator_new(&enumerator);
if (r < 0)
fprintf(stderr, "Failed to allocate sd_device_enumerator: %s\n", strerror(-r));
…
}
sd_device_enumerator_ref() and sd_device_enumerator_unref()
execute no operation if the enumerator is NULL.
sd_device_enumerator_unrefp() will first dereference
its argument, which must not be NULL, and will execute no operation if
that is NULL.
Return Value
sd_device_enumerator_new() returns 0 on success or a negative
errno-style error code on failure.
sd_device_enumerator_ref() always returns the enumerator pointer.
sd_device_enumerator_unref() always returns NULL.
Errors
Returned errors may indicate the following problems:
-ENOMEM
Memory allocation failed.
-EINVAL
The argument is invalid.
Example
Using sd_device_enumerator_new()
History
sd_device_enumerator_new(), sd_device_enumerator_ref(),
sd_device_enumerator_unref(), and sd_device_enumerator_unrefp()
were added in version 240.
See Also
sd_device_ref3
sd_device_enumerator_add_match_parent
3