diff options
Diffstat (limited to 'upstream/fedora-rawhide/man3/sd_device_ref.3')
-rw-r--r-- | upstream/fedora-rawhide/man3/sd_device_ref.3 | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/upstream/fedora-rawhide/man3/sd_device_ref.3 b/upstream/fedora-rawhide/man3/sd_device_ref.3 new file mode 100644 index 00000000..c80f8456 --- /dev/null +++ b/upstream/fedora-rawhide/man3/sd_device_ref.3 @@ -0,0 +1,105 @@ +'\" t +.TH "SD_DEVICE_REF" "3" "" "systemd 255" "sd_device_ref" +.\" ----------------------------------------------------------------- +.\" * Define some portability stuff +.\" ----------------------------------------------------------------- +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.\" http://bugs.debian.org/507673 +.\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html +.\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" ----------------------------------------------------------------- +.\" * set default formatting +.\" ----------------------------------------------------------------- +.\" disable hyphenation +.nh +.\" disable justification (adjust text to left margin only) +.ad l +.\" ----------------------------------------------------------------- +.\" * MAIN CONTENT STARTS HERE * +.\" ----------------------------------------------------------------- +.SH "NAME" +sd_device_ref, sd_device_unref, sd_device_unrefp \- Create or destroy references to a device object +.SH "SYNOPSIS" +.sp +.ft B +.nf +#include <systemd/sd\-device\&.h> +.fi +.ft +.HP \w'sd_device*\ sd_device_ref('u +.BI "sd_device* sd_device_ref(sd_device\ *" "device" ");" +.HP \w'sd_device*\ sd_device_unref('u +.BI "sd_device* sd_device_unref(sd_device\ *" "device" ");" +.HP \w'void\ sd_device_unrefp('u +.BI "void sd_device_unrefp(sd_device\ **" "device" ");" +.PP +\fBsd_device_ref()\fR +increases the internal reference counter of +\fIdevice\fR +by one\&. +.PP +\fBsd_device_unref()\fR +decreases the internal reference counter of +\fIdevice\fR +by one\&. Once the reference count has dropped to zero, +\fIdevice\fR +is destroyed and cannot be used anymore, so further calls to +\fBsd_device_ref()\fR +or +\fBsd_device_unref()\fR +are illegal\&. +.PP +\fBsd_device_unrefp()\fR +is similar to +\fBsd_device_unref()\fR +but takes a pointer to a pointer to an +\fBsd_device\fR +object\&. This call is useful in conjunction with GCC\*(Aqs and LLVM\*(Aqs +\m[blue]\fBClean\-up Variable Attribute\fR\m[]\&\s-2\u[1]\d\s+2\&. Note that this function is defined as an inline function\&. Use a declaration like the following, in order to allocate a device object that is freed automatically as the code block is left: +.sp +.nf +{ + __attribute__((cleanup(sd_device_unrefp))) sd_device *device = NULL; + int r; + \&... + r = sd_device_new_from_syspath(&device, "\&..."); + if (r < 0) { + errno = \-r; + fprintf(stderr, "Failed to allocate device: %m\en"); + } + \&... +} +.fi +.PP +\fBsd_device_ref()\fR +and +\fBsd_device_unref()\fR +execute no operation if the argument is +\fBNULL\fR\&. +\fBsd_device_unrefp()\fR +will first dereference its argument, which must not be +\fBNULL\fR, and will execute no operation if +\fIthat\fR +is +\fBNULL\fR\&. +.SH "RETURN VALUE" +.PP +\fBsd_device_ref()\fR +always returns the argument, and +\fBsd_device_unref()\fR +always returns +\fBNULL\fR\&. +.SH "HISTORY" +.PP +\fBsd_device_ref()\fR, +\fBsd_device_unref()\fR, and +\fBsd_device_unrefp()\fR +were added in version 251\&. +.SH "NOTES" +.IP " 1." 4 +Clean-up Variable Attribute +.RS 4 +\%https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html +.RE |