---
name: "sd_event_source_set_description"
section: "3"
platform: "linux"
package: "systemd-libs"
version: "262.1-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/sd_event_source_set_description"
---

# sd\_event\_source\_set\_description(3)

Set or retrieve descriptive names of event sources

## NAME

sd\_event\_source\_set\_description, sd\_event\_source\_get\_description - Set or retrieve descriptive names of event sources

## SYNOPSIS

```
#include <systemd/sd-event.h>
```

**int sd\_event\_source\_set\_description(sd\_event\_source \****source***, const char \****description***);**

**int sd\_event\_source\_get\_description(sd\_event\_source \****source***, const char \*\****ret***);**

## DESCRIPTION

**sd\_event\_source\_set\_description()** may be used to set an arbitrary descriptive name for the event source object specified as *source*. This name will be used in debugging messages generated by [**sd-event**(3)](/sd-event/3.md) for this event source, and may be queried using **sd\_event\_source\_get\_description()** for debugging purposes. The *description* parameter shall point to a **NUL**-terminated string or be **NULL**. In the latter case, the descriptive name will be unset. The string is copied internally, hence the *description* argument is not referenced after the function returns.

**sd\_event\_source\_get\_description()** may be used to query the current descriptive name assigned to the event source object *source*. It returns a pointer to the current name in *ret*, stored in memory internal to the event source. The memory is invalidated when the event source is destroyed or the descriptive name is changed.

Event source objects generally have no description set when they are created, except for UNIX signal event sources created with [**sd\_event\_add\_signal**(3)](/sd_event_add_signal/3.md), whose descriptive name is initialized to the signal's C constant name (e.g. "SIGINT" or "SIGTERM").

## RETURN VALUE

On success, **sd\_event\_source\_set\_description()** and **sd\_event\_source\_get\_description()** return a non-negative integer. On failure, they return a negative errno-style error code.

### Errors

Returned errors may indicate the following problems:

**-EINVAL**

*source* is not a valid pointer to an sd\_event\_source object or the *description* argument for **sd\_event\_source\_get\_description()** is **NULL**.

**-ENOMEM**

Not enough memory to copy the name.

**-ECHILD**

The event loop has been created in a different process, library or module instance.

**-ENXIO**

No name was set for the event source.

## NOTES

Functions described here are available as a shared library, which can be compiled against and linked to with the **libsystemd** [**pkg-config**(1)](/pkg-config/1.md) 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)](/getenv/3.md), which is declared to be not multi-thread-safe. This means that the code calling the functions described here must not call [**setenv**(3)](/setenv/3.md) from a parallel thread. It is recommended to only do calls to **setenv()** from an early phase of the program when no other threads have been started.

## HISTORY

**sd\_event\_source\_set\_description()** and **sd\_event\_source\_get\_description()** were added in version 229.

## SEE ALSO

[**sd-event**(3)](/sd-event/3.md), [**sd\_event\_add\_io**(3)](/sd_event_add_io/3.md), [**sd\_event\_add\_time**(3)](/sd_event_add_time/3.md), [**sd\_event\_add\_signal**(3)](/sd_event_add_signal/3.md), [**sd\_event\_add\_child**(3)](/sd_event_add_child/3.md), [**sd\_event\_add\_inotify**(3)](/sd_event_add_inotify/3.md), [**sd\_event\_add\_defer**(3)](/sd_event_add_defer/3.md), [**sd\_event\_source\_set\_userdata**(3)](/sd_event_source_set_userdata/3.md)
