chiark / gitweb /
event: add sd_event_source_get_child_pid() call to query the PID of a child event...
authorLennart Poettering <lennart@poettering.net>
Thu, 10 Oct 2013 23:33:25 +0000 (01:33 +0200)
committerLennart Poettering <lennart@poettering.net>
Thu, 10 Oct 2013 23:33:25 +0000 (01:33 +0200)
src/libsystemd-bus/sd-event.c
src/systemd/sd-event.h

index 3094d9e297e9ab82e04fe35797ca111a63e87fd6..482e3bb8a5a325053a49dd763f34eb477da0faa4 100644 (file)
@@ -1297,6 +1297,16 @@ int sd_event_source_get_time_accuracy(sd_event_source *s, uint64_t *usec) {
         return 0;
 }
 
         return 0;
 }
 
+int sd_event_source_get_child_pid(sd_event_source *s, pid_t *pid) {
+        assert_return(s, -EINVAL);
+        assert_return(pid, -EINVAL);
+        assert_return(s->type == SOURCE_CHILD, -EDOM);
+        assert_return(!event_pid_changed(s->event), -ECHILD);
+
+        *pid = s->child.pid;
+        return 0;
+}
+
 int sd_event_source_set_prepare(sd_event_source *s, sd_prepare_handler_t callback) {
         int r;
 
 int sd_event_source_set_prepare(sd_event_source *s, sd_prepare_handler_t callback) {
         int r;
 
index 1fd5648636573c4ac9570c041b70bf3fbcdfed67..6ff85addb1eacf6807e3e9960c927929807cf22d 100644 (file)
@@ -35,8 +35,6 @@
   - Scales better with a large number of time events, since it doesn't require one timerfd each
   - Automatically tries to coalesce timer events system-wide
   - Handles signals and child PIDs
   - Scales better with a large number of time events, since it doesn't require one timerfd each
   - Automatically tries to coalesce timer events system-wide
   - Handles signals and child PIDs
-
-  TODO: rename mute to enable?
 */
 
 typedef struct sd_event sd_event;
 */
 
 typedef struct sd_event sd_event;
@@ -101,6 +99,7 @@ int sd_event_source_get_time(sd_event_source *s, uint64_t *usec);
 int sd_event_source_set_time(sd_event_source *s, uint64_t usec);
 int sd_event_source_set_time_accuracy(sd_event_source *s, uint64_t usec);
 int sd_event_source_get_time_accuracy(sd_event_source *s, uint64_t *usec);
 int sd_event_source_set_time(sd_event_source *s, uint64_t usec);
 int sd_event_source_set_time_accuracy(sd_event_source *s, uint64_t usec);
 int sd_event_source_get_time_accuracy(sd_event_source *s, uint64_t *usec);
+int sd_event_source_get_child_pid(sd_event_source *s, pid_t *pid);
 int sd_event_source_set_prepare(sd_event_source *s, sd_prepare_handler_t callback);
 void* sd_event_source_get_userdata(sd_event_source *s);
 
 int sd_event_source_set_prepare(sd_event_source *s, sd_prepare_handler_t callback);
 void* sd_event_source_get_userdata(sd_event_source *s);