]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
event-util: add helper for adding pidref child to event loop
authorLennart Poettering <lennart@poettering.net>
Fri, 19 Jan 2024 17:02:19 +0000 (18:02 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 22 Jan 2024 13:03:09 +0000 (14:03 +0100)
src/libsystemd/sd-event/event-util.c
src/libsystemd/sd-event/event-util.h

index a3101227af7dc645473f416b7ef06dc4a31dbb08..2338df1d629c0d2f6e17f44798d9bf49ce3d2a09 100644 (file)
@@ -151,3 +151,20 @@ int event_add_time_change(sd_event *e, sd_event_source **ret, sd_event_io_handle
 
         return 0;
 }
+
+int event_add_child_pidref(
+                sd_event *e,
+                sd_event_source **s,
+                const PidRef *pid,
+                int options,
+                sd_event_child_handler_t callback,
+                void *userdata) {
+
+        if (!pidref_is_set(pid))
+                return -ESRCH;
+
+        if (pid->fd >= 0)
+                return sd_event_add_child_pidfd(e, s, pid->fd, options, callback, userdata);
+
+        return sd_event_add_child(e, s, pid->pid, options, callback, userdata);
+}
index c185584412314dfd2066d78d0e5da1fffa7b3a0f..6259d5ae2552ae0784fbf3e7e6dfa73408a0cc06 100644 (file)
@@ -5,6 +5,8 @@
 
 #include "sd-event.h"
 
+#include "pidref.h"
+
 int event_reset_time(
                 sd_event *e,
                 sd_event_source **s,
@@ -32,3 +34,5 @@ static inline int event_source_disable(sd_event_source *s) {
 }
 
 int event_add_time_change(sd_event *e, sd_event_source **ret, sd_event_io_handler_t callback, void *userdata);
+
+int event_add_child_pidref(sd_event *e, sd_event_source **s, const PidRef *pid, int options, sd_event_child_handler_t callback, void *userdata);