sd_event_source_unref, sd_event_source_unrefp, sd_event_source_ref, sd_event_source_disable_unref — Increase or decrease event source reference counters
#include <systemd/sd-event.h>
sd_event_source* sd_event_source_unref( | sd_event_source *source) ; |
void sd_event_source_unrefp( | sd_event_source **source) ; |
sd_event_source* sd_event_source_ref( | sd_event_source *source) ; |
sd_event_source* sd_event_source_disable_unref( | sd_event_source *source) ; |
sd_event_source_unref()
may be used to
decrement by one the reference counter of the event source object
specified as source
. The reference counter
is initially set to one, when the event source is created with calls
such as
sd_event_add_io(3)
or
sd_event_add_time(3). When
the reference counter reaches zero it is removed from its event loop
object and destroyed.
sd_event_source_unrefp()
is similar to
sd_event_source_unref()
but takes a pointer to a
pointer to an sd_event_source object. This call is useful in
conjunction with GCC's and LLVM's Clean-up
Variable Attribute. Note that this function is defined as
inline function.
sd_event_source_ref()
may be used
to increase by one the reference counter of the event source object
specified as source
.
sd_event_source_unref()
,
sd_bus_creds_unrefp()
and
sd_bus_creds_ref()
execute no operation if
the passed event source object is
NULL
.
Note that event source objects stay alive and may be dispatched as long as they have a reference
counter greater than zero. In order to drop a reference of an event source and make sure the associated
event source handler function is not called anymore it is recommended to combine a call of
sd_event_source_unref()
with a prior call to
sd_event_source_set_enabled()
with SD_EVENT_OFF
or call
sd_event_source_disable_unref()
, see below.
sd_event_source_disable_unref()
combines a call to
sd_event_source_set_enabled()
with SD_EVENT_OFF
with
sd_event_source_unref()
. This ensures that the source is disabled before the local
reference to it is lost. The source
parameter is allowed to be
NULL
.
sd_event_source_unref()
and
sd_event_source_disable_unref()
always return NULL
.
sd_event_source_ref()
always returns the event source object passed in.
These APIs are implemented as a shared
library, which can be compiled and linked to with the
libsystemd
pkg-config(1)
file.