sd_event_source_unref

Index · Directives systemd 234

## Name

sd_event_source_unref, sd_event_source_unrefp, sd_event_source_ref — Increase or decrease event source reference counters

## Synopsis

    #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`)`;

## Description

`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`.

## Return Value

`sd_event_source_unref()` always returns `NULL`. `sd_event_source_ref()` always returns the event source object passed in.

## Notes

These APIs are implemented as a shared library, which can be compiled and linked to with the `libsystemd` pkg-config(1) file.

## See Also

sd-event(3), sd_event_add_io(3), sd_event_add_time(3), sd_event_add_child(3), sd_event_add_signal(3), sd_event_add_defer(3), sd_event_source_set_enabled(3)