summaryrefslogtreecommitdiffstats
path: root/upstream/mageia-cauldron/man3/sd_event_new.3
diff options
context:
space:
mode:
Diffstat (limited to 'upstream/mageia-cauldron/man3/sd_event_new.3')
-rw-r--r--upstream/mageia-cauldron/man3/sd_event_new.3198
1 files changed, 198 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man3/sd_event_new.3 b/upstream/mageia-cauldron/man3/sd_event_new.3
new file mode 100644
index 00000000..c7f5b98e
--- /dev/null
+++ b/upstream/mageia-cauldron/man3/sd_event_new.3
@@ -0,0 +1,198 @@
+'\" t
+.TH "SD_EVENT_NEW" "3" "" "systemd 255" "sd_event_new"
+.\" -----------------------------------------------------------------
+.\" * 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_event_new, sd_event_default, sd_event_ref, sd_event_unref, sd_event_unrefp, sd_event_get_tid, sd_event \- Acquire and release an event loop object
+.SH "SYNOPSIS"
+.sp
+.ft B
+.nf
+#include <systemd/sd\-event\&.h>
+.fi
+.ft
+.sp
+.ft B
+.nf
+typedef struct sd_event sd_event;
+.fi
+.ft
+.HP \w'int\ sd_event_new('u
+.BI "int sd_event_new(sd_event\ **" "event" ");"
+.HP \w'int\ sd_event_default('u
+.BI "int sd_event_default(sd_event\ **" "event" ");"
+.HP \w'sd_event\ *sd_event_ref('u
+.BI "sd_event *sd_event_ref(sd_event\ *" "event" ");"
+.HP \w'sd_event\ *sd_event_unref('u
+.BI "sd_event *sd_event_unref(sd_event\ *" "event" ");"
+.HP \w'void\ sd_event_unrefp('u
+.BI "void sd_event_unrefp(sd_event\ **" "event" ");"
+.HP \w'int\ sd_event_get_tid('u
+.BI "int sd_event_get_tid(sd_event\ *" "event" ", pid_t\ *" "tid" ");"
+.SH "DESCRIPTION"
+.PP
+\fBsd_event_new()\fR
+allocates a new event loop object\&. The event loop object is returned in the
+\fIevent\fR
+parameter\&. After use, drop the returned reference with
+\fBsd_event_unref()\fR\&. When the last reference is dropped, the object is freed\&.
+.PP
+\fBsd_event_default()\fR
+acquires a reference to the default event loop object of the calling thread, possibly allocating a new object if no default event loop object has been allocated yet for the thread\&. After use, drop the returned reference with
+\fBsd_event_unref()\fR\&. When the last reference is dropped, the event loop is freed\&. If this function is called while the object returned from a previous call from the same thread is still referenced, the same object is returned again, but the reference is increased by one\&. It is recommended to use this call instead of
+\fBsd_event_new()\fR
+in order to share event loop objects between various components that are dispatched in the same thread\&. All threads have exactly either zero or one default event loop objects associated, but never more\&.
+.PP
+After allocating an event loop object, add event sources to it with
+\fBsd_event_add_io\fR(3),
+\fBsd_event_add_time\fR(3),
+\fBsd_event_add_signal\fR(3),
+\fBsd_event_add_child\fR(3),
+\fBsd_event_add_inotify\fR(3),
+\fBsd_event_add_defer\fR(3),
+\fBsd_event_add_post\fR(3)
+or
+\fBsd_event_add_exit\fR(3), and then execute the event loop using
+\fBsd_event_loop\fR(3)\&.
+.PP
+\fBsd_event_ref()\fR
+increases the reference count of the specified event loop object by one\&.
+.PP
+\fBsd_event_unref()\fR
+decreases the reference count of the specified event loop object by one\&. If the count hits zero, the object is freed\&. Note that it is freed regardless of whether it is the default event loop object for a thread or not\&. This means that allocating an event loop with
+\fBsd_event_default()\fR, then releasing it, and then acquiring a new one with
+\fBsd_event_default()\fR
+will result in two distinct objects\&. Note that, in order to free an event loop object, all remaining event sources of the event loop also need to be freed as each keeps a reference to it\&.
+.PP
+\fBsd_event_unrefp()\fR
+is similar to
+\fBsd_event_unref()\fR
+but takes a pointer to a pointer to an
+\fBsd_event\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 inline function\&. Use a declaration like the following, in order to allocate an event loop object that is freed automatically as the code block is left:
+.sp
+.if n \{\
+.RS 4
+.\}
+.nf
+{
+ __attribute__((cleanup(sd_event_unrefp))) sd_event *event = NULL;
+ int r;
+ \&...
+ r = sd_event_default(&event);
+ if (r < 0) {
+ errno = \-r;
+ fprintf(stderr, "Failed to allocate event loop: %m\en");
+ }
+ \&...
+}
+.fi
+.if n \{\
+.RE
+.\}
+.PP
+\fBsd_event_ref()\fR,
+\fBsd_event_unref()\fR
+and
+\fBsd_event_unrefp()\fR
+execute no operation if the passed in event loop object is
+\fBNULL\fR\&.
+.PP
+\fBsd_event_get_tid()\fR
+retrieves the thread identifier ("TID") of the thread the specified event loop object is associated with\&. This call is only supported for event loops allocated with
+\fBsd_event_default()\fR, and returns the identifier for the thread the event loop is the default event loop of\&. See
+\fBgettid\fR(2)
+for more information on thread identifiers\&.
+.SH "RETURN VALUE"
+.PP
+On success,
+\fBsd_event_new()\fR,
+\fBsd_event_default()\fR
+and
+\fBsd_event_get_tid()\fR
+return 0 or a positive integer\&. On failure, they return a negative errno\-style error code\&.
+\fBsd_event_ref()\fR
+always returns a pointer to the event loop object passed in\&.
+\fBsd_event_unref()\fR
+always returns
+\fBNULL\fR\&.
+.SS "Errors"
+.PP
+Returned errors may indicate the following problems:
+.PP
+\fB\-ENOMEM\fR
+.RS 4
+Not enough memory to allocate the object\&.
+.RE
+.PP
+\fB\-EMFILE\fR
+.RS 4
+The maximum number of event loops has been allocated\&.
+.RE
+.PP
+\fB\-ENXIO\fR
+.RS 4
+\fBsd_event_get_tid()\fR
+was invoked on an event loop object that was not allocated with
+\fBsd_event_default()\fR\&.
+.RE
+.SH "NOTES"
+.PP
+Functions described here are available as a shared library, which can be compiled against and linked to with the
+\fBlibsystemd\fR\ \&\fBpkg-config\fR(1)
+file\&.
+.PP
+The code described here uses
+\fBgetenv\fR(3), which is declared to be not multi\-thread\-safe\&. This means that the code calling the functions described here must not call
+\fBsetenv\fR(3)
+from a parallel thread\&. It is recommended to only do calls to
+\fBsetenv()\fR
+from an early phase of the program when no other threads have been started\&.
+.SH "HISTORY"
+.PP
+\fBsd_event_new()\fR,
+\fBsd_event_default()\fR,
+\fBsd_event_ref()\fR, and
+\fBsd_event_unref()\fR
+were added in version 213\&.
+.PP
+\fBsd_event_unrefp()\fR
+and
+\fBsd_event_get_tid()\fR
+were added in version 229\&.
+.SH "SEE ALSO"
+.PP
+\fBsystemd\fR(1),
+\fBsd-event\fR(3),
+\fBsd_event_add_io\fR(3),
+\fBsd_event_add_time\fR(3),
+\fBsd_event_add_signal\fR(3),
+\fBsd_event_add_child\fR(3),
+\fBsd_event_add_inotify\fR(3),
+\fBsd_event_add_defer\fR(3),
+\fBsd_event_run\fR(3),
+\fBgettid\fR(2)
+.SH "NOTES"
+.IP " 1." 4
+Clean-up Variable Attribute
+.RS 4
+\%https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html
+.RE