diff options
author | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-08-12 03:49:56 +0900 |
---|---|---|
committer | Yu Watanabe <watanabe.yu+github@gmail.com> | 2022-08-12 21:27:14 +0900 |
commit | 39f11aa422a704e965d7805f2c87f869682ab695 (patch) | |
tree | c39f52146d8f0e30ce868ef7adf8242ad38c3558 /src/libsystemd | |
parent | edf6cbc30f60627fedaf88480ba03b6bbed9da99 (diff) | |
download | systemd-39f11aa422a704e965d7805f2c87f869682ab695.tar.gz |
sd-device-monitor: introduce sd_device_monitor_{set,get}_description()
Diffstat (limited to 'src/libsystemd')
-rw-r--r-- | src/libsystemd/libsystemd.sym | 2 | ||||
-rw-r--r-- | src/libsystemd/sd-device/device-monitor.c | 27 |
2 files changed, 28 insertions, 1 deletions
diff --git a/src/libsystemd/libsystemd.sym b/src/libsystemd/libsystemd.sym index 5c5446e987..215b6cf87f 100644 --- a/src/libsystemd/libsystemd.sym +++ b/src/libsystemd/libsystemd.sym @@ -785,6 +785,8 @@ global: sd_bus_error_setfv; sd_device_new_child; + sd_device_monitor_set_description; + sd_device_monitor_get_description; sd_id128_string_equal; diff --git a/src/libsystemd/sd-device/device-monitor.c b/src/libsystemd/sd-device/device-monitor.c index c179c116bb..c30dbe391d 100644 --- a/src/libsystemd/sd-device/device-monitor.c +++ b/src/libsystemd/sd-device/device-monitor.c @@ -46,6 +46,7 @@ struct sd_device_monitor { sd_event *event; sd_event_source *event_source; + char *description; sd_device_monitor_handler_t callback; void *userdata; }; @@ -263,7 +264,7 @@ _public_ int sd_device_monitor_start(sd_device_monitor *m, sd_device_monitor_han if (r < 0) return r; - (void) sd_event_source_set_description(m->event_source, "sd-device-monitor"); + (void) sd_event_source_set_description(m->event_source, m->description ?: "sd-device-monitor"); return 0; } @@ -306,6 +307,29 @@ _public_ sd_event_source *sd_device_monitor_get_event_source(sd_device_monitor * return m->event_source; } +_public_ int sd_device_monitor_set_description(sd_device_monitor *m, const char *description) { + int r; + + assert_return(m, -EINVAL); + + r = free_and_strdup(&m->description, description); + if (r <= 0) + return r; + + if (m->event_source) + (void) sd_event_source_set_description(m->event_source, description); + + return r; +} + +_public_ int sd_device_monitor_get_description(sd_device_monitor *m, const char **ret) { + assert_return(m, -EINVAL); + assert_return(ret, -EINVAL); + + *ret = m->description; + return 0; +} + int device_monitor_enable_receiving(sd_device_monitor *m) { int r; @@ -339,6 +363,7 @@ static sd_device_monitor *device_monitor_free(sd_device_monitor *m) { (void) sd_device_monitor_detach_event(m); + free(m->description); hashmap_free(m->subsystem_filter); set_free(m->tag_filter); hashmap_free(m->match_sysattr_filter); |