]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
event-util: introduce event_reset_time_relative()
authorYu Watanabe <watanabe.yu+github@gmail.com>
Sat, 13 Nov 2021 01:33:08 +0000 (10:33 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Sun, 14 Nov 2021 01:32:06 +0000 (10:32 +0900)
src/libsystemd/sd-event/event-util.c
src/libsystemd/sd-event/event-util.h

index 132796fc6c2b885859472bb14ae6bdba49bbebdf..0e53406a9485ee235fd8bfb765adfe81b3597e90 100644 (file)
@@ -84,6 +84,30 @@ int event_reset_time(
         return created;
 }
 
+int event_reset_time_relative(
+                sd_event *e,
+                sd_event_source **s,
+                clockid_t clock,
+                uint64_t usec,
+                uint64_t accuracy,
+                sd_event_time_handler_t callback,
+                void *userdata,
+                int64_t priority,
+                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");
+
+        return event_reset_time(e, s, clock, usec_add(usec_now, usec), accuracy, callback, userdata, priority, description, force_reset);
+}
+
 int event_source_disable(sd_event_source *s) {
         if (!s)
                 return 0;
index c8f97bc8d61ff2b19c2fac81f19638057d80d368..64a41992449186cd920321427d33526b9950f4b3 100644 (file)
@@ -5,9 +5,27 @@
 
 #include "sd-event.h"
 
-int event_reset_time(sd_event *e, sd_event_source **s,
-                     clockid_t clock, uint64_t usec, uint64_t accuracy,
-                     sd_event_time_handler_t callback, void *userdata,
-                     int64_t priority, const char *description, bool force_reset);
+int event_reset_time(
+                sd_event *e,
+                sd_event_source **s,
+                clockid_t clock,
+                uint64_t usec,
+                uint64_t accuracy,
+                sd_event_time_handler_t callback,
+                void *userdata,
+                int64_t priority,
+                const char *description,
+                bool force_reset);
+int event_reset_time_relative(
+                sd_event *e,
+                sd_event_source **s,
+                clockid_t clock,
+                uint64_t usec,
+                uint64_t accuracy,
+                sd_event_time_handler_t callback,
+                void *userdata,
+                int64_t priority,
+                const char *description,
+                bool force_reset);
 int event_source_disable(sd_event_source *s);
 int event_source_is_enabled(sd_event_source *s);