SD_BUS_SLOT_SET_USERDATA(3)
π NAME π
sd_bus_slot_set_userdata, sd_bus_slot_get_userdata β set and query the value in the "userdata" field. This is the SD_BUS_SLOT_SET_USERDATA(3) manual page, and it's literally all about that one little void* that carries your stuff around the bus, bestie.
β¨ SYNOPSIS β¨
#include <systemd/sd-bus.h>
void* sd_bus_slot_set_userdata(sd_bus_slot* slot, void* userdata);
void* sd_bus_slot_get_userdata(sd_bus_slot* slot);
π¦ DESCRIPTION π¦
Okay so the userdata pointer lets data travel between the point where a callback gets registered β for example when a filter is added using sd_bus_add_filter(3), or an asynchronous function call is made using sd_bus_call_async(3) β and the point where the callback is actually called. All that without needing any global state. Iconic, honestly. The pointer has type void* and is not used by the sd-bus functions in any way, except to pass to the callback function.
Usually, the userdata field is set when the slot object is initially registered. sd_bus_slot_set_userdata() may be used to change it later for the bus slot object slot. Previous value of the field is returned. The argument and returned value may be NULL. It will be passed as the userdata argument to the callback function attached to the slot.
sd_bus_slot_get_userdata() gets the value of the userdata field in the bus slot object slot.
π RETURN VALUE π
On success, these functions return the value of the userdata field before the function call.
If the slot object is NULL, NULL will be returned to signify an error, but this is not distinguishable from the userdata field value being NULL.
π yeah, thatNULLambiguity is real β error or just aNULLvalue? Not distinguishable, no cap.
π NOTES π
- Functions described here are available as a shared library, which can be compiled against and linked to with the
libsystemdpkg-config(1)file. - All functions listed here are thread-agnostic and only a single thread may operate on a given object at any given time. Different threads may access the same object at different times. Multiple independent objects may be used from different threads in parallel.
- The code described here uses
getenv(3), which is declared to be not multi-thread-safe. This means that the code calling the functions described here must not callsetenv(3)from a parallel thread. It is recommended to only do calls tosetenv()from an early phase of the program when no other threads have been started.
π«Ά bestie warning: do not be out here calling setenv(3) from a parallel thread while using these functions β the manual says no.
π HISTORY π
sd_bus_slot_set_userdata() and sd_bus_slot_get_userdata() were added in version 240.
π SEE ALSO π
systemd(1)sd-bus(3)sd_bus_slot_set_destroy_callback(3)sd_bus_add_match(3)sd_bus_slot_get_current_userdata(3)
systemd 261.3, manual name SD_BUS_SLOT_SET_USERDATA(3) β that's the little footer vibe, bestie, mwah πβ¨
π¦ where this page comes from
- ubuntu stonking: libsystemd-dev 261.3-0ubuntu3 Β· LGPL-2.1-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms