uloop: add uloop_timeout_remaining64
authorStijn Tintel <stijn@linux-ipv6.be>
Thu, 4 Nov 2021 10:26:41 +0000 (12:26 +0200)
committerStijn Tintel <stijn@linux-ipv6.be>
Thu, 4 Nov 2021 11:05:24 +0000 (13:05 +0200)
This uses the same return type as tv_diff so we don't need to check for
integer overflow.

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
Acked-by: Jo-Philipp Wich <jo@mein.io>
Acked-by: John Crispin <john@phrozen.org>
uloop.c
uloop.h

diff --git a/uloop.c b/uloop.c
index 769b6c580711257923cd8b960c9376365ec55fee..0134fa4f21f55688c1c9a04d05b3afb5e55a1072 100644 (file)
--- a/uloop.c
+++ b/uloop.c
@@ -338,6 +338,18 @@ int uloop_timeout_remaining(struct uloop_timeout *timeout)
                return (int)td;
 }
 
+int64_t uloop_timeout_remaining64(struct uloop_timeout *timeout)
+{
+       struct timeval now;
+
+       if (!timeout->pending)
+               return -1;
+
+       uloop_gettime(&now);
+
+       return tv_diff(&timeout->time, &now);
+}
+
 int uloop_process_add(struct uloop_process *p)
 {
        struct uloop_process *tmp;
diff --git a/uloop.h b/uloop.h
index 36084f520e2ac8570967f1c98474874f9fba0af9..7ac345ea1b2841e0af27c9fccabc47128be30e97 100644 (file)
--- a/uloop.h
+++ b/uloop.h
@@ -93,6 +93,7 @@ int uloop_timeout_add(struct uloop_timeout *timeout);
 int uloop_timeout_set(struct uloop_timeout *timeout, int msecs);
 int uloop_timeout_cancel(struct uloop_timeout *timeout);
 int uloop_timeout_remaining(struct uloop_timeout *timeout);
+int64_t uloop_timeout_remaining64(struct uloop_timeout *timeout);
 
 int uloop_process_add(struct uloop_process *p);
 int uloop_process_delete(struct uloop_process *p);