Index · Directives · Python · libudev · gudev systemd 220


sd_bus_new, sd_bus_ref, sd_bus_unref — Create a new bus object and create or destroy references to it


#include <systemd/sd-bus.h>
int sd_bus_new(sd_bus **bus);
sd_bus *sd_bus_ref(sd_bus *bus);
sd_bus *sd_bus_unref(sd_bus *bus);


sd_bus_new() creates a new bus object. This object is reference-counted, and will be destroyed when all references are gone. Initially, the caller of this function owns the sole reference.

sd_bus_ref() creates a new reference to bus. This bus object will not be destroyed until sd_bus_unref() has been called as many times plus once more. Once the reference count has dropped to zero, bus cannot be used anymore, so further calls to sd_bus_ref() or sd_bus_unref() are illegal.

sd_bus_unref() destroys a reference to bus.

Return Value

On success, sd_bus_new() returns 0 or a positive integer. On failure, it returns a negative errno-style error code.

sd_bus_ref always returns the argument.

sd_bus_unref always returns NULL.


Returned errors may indicate the following problems:


Memory allocation failed.


sd_bus_new() and other functions described here are available as a shared library, which can be compiled and linked to with the libsystemd pkg-config(1) file.

See Also

systemd(1), sd-bus(3), sd_bus_open_user(3), sd_bus_open_system(3), sd_bus_default_user(3), sd_bus_default_system(3)