diff options
Diffstat (limited to 'src/libnm-systemd-core/src/libsystemd/sd-event/event-util.c')
-rw-r--r-- | src/libnm-systemd-core/src/libsystemd/sd-event/event-util.c | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/src/libnm-systemd-core/src/libsystemd/sd-event/event-util.c b/src/libnm-systemd-core/src/libsystemd/sd-event/event-util.c index 663296f408..ef0c2d2af2 100644 --- a/src/libnm-systemd-core/src/libsystemd/sd-event/event-util.c +++ b/src/libnm-systemd-core/src/libsystemd/sd-event/event-util.c @@ -99,16 +99,21 @@ int event_reset_time_relative( const char *description, bool force_reset) { - usec_t usec_now; int r; assert(e); - r = sd_event_now(e, clock, &usec_now); - if (r < 0) - return log_debug_errno(r, "sd-event: Failed to get the current time: %m"); + if (usec > 0) { + usec_t usec_now; + + r = sd_event_now(e, clock, &usec_now); + if (r < 0) + return log_debug_errno(r, "sd-event: Failed to get the current time: %m"); - return event_reset_time(e, s, clock, usec_add(usec_now, usec), accuracy, callback, userdata, priority, description, force_reset); + usec = usec_add(usec_now, usec); + } + + return event_reset_time(e, s, clock, usec, accuracy, callback, userdata, priority, description, force_reset); } #if 0 /* NM_IGNORED */ @@ -149,4 +154,21 @@ 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); +} #endif /* NM_IGNORED */ |