1SD_DEVICE_REF(3)                 sd_device_ref                SD_DEVICE_REF(3)
2
3
4

NAME

6       sd_device_ref, sd_device_unref, sd_device_unrefp - Create or destroy
7       references to a device object
8

SYNOPSIS

10       #include <systemd/sd-device.h>
11
12       sd_device* sd_device_ref(sd_device *device);
13
14       sd_device* sd_device_unref(sd_device *device);
15
16       void sd_device_unrefp(sd_device **device);
17
18       sd_device_ref() increases the internal reference counter of device by
19       one.
20
21       sd_device_unref() decreases the internal reference counter of device by
22       one. Once the reference count has dropped to zero, device is destroyed
23       and cannot be used anymore, so further calls to sd_device_ref() or
24       sd_device_unref() are illegal.
25
26       sd_device_unrefp() is similar to sd_device_unref() but takes a pointer
27       to a pointer to an sd_device object. This call is useful in conjunction
28       with GCC's and LLVM's Clean-up Variable Attribute[1]. Note that this
29       function is defined as an inline function. Use a declaration like the
30       following, in order to allocate a device object that is freed
31       automatically as the code block is left:
32
33       {
34         __attribute__((cleanup(sd_device_unrefp))) sd_device *device = NULL;
35         int r;
36         ...
37         r = sd_device_new_from_syspath(&device, "...");
38         if (r < 0) {
39           errno = -r;
40           fprintf(stderr, "Failed to allocate device: %m\n");
41         }
42         ...
43       }
44
45       sd_device_ref() and sd_device_unref() execute no operation if the
46       argument is NULL.  sd_device_unrefp() will first dereference its
47       argument, which must not be NULL, and will execute no operation if that
48       is NULL.
49

RETURN VALUE

51       sd_device_ref() always returns the argument, and sd_device_unref()
52       always returns NULL.
53

NOTES

55        1. Clean-up Variable Attribute
56           https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html
57
58
59
60systemd 253                                                   SD_DEVICE_REF(3)
Impressum