summaryrefslogtreecommitdiff
path: root/src/libsystemd
diff options
context:
space:
mode:
authorYu Watanabe <watanabe.yu+github@gmail.com>2022-08-12 03:49:56 +0900
committerYu Watanabe <watanabe.yu+github@gmail.com>2022-08-12 21:27:14 +0900
commit39f11aa422a704e965d7805f2c87f869682ab695 (patch)
treec39f52146d8f0e30ce868ef7adf8242ad38c3558 /src/libsystemd
parentedf6cbc30f60627fedaf88480ba03b6bbed9da99 (diff)
downloadsystemd-39f11aa422a704e965d7805f2c87f869682ab695.tar.gz
sd-device-monitor: introduce sd_device_monitor_{set,get}_description()
Diffstat (limited to 'src/libsystemd')
-rw-r--r--src/libsystemd/libsystemd.sym2
-rw-r--r--src/libsystemd/sd-device/device-monitor.c27
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);