summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Tintel <stijn@linux-ipv6.be>2021-11-04 12:26:41 +0200
committerStijn Tintel <stijn@linux-ipv6.be>2021-11-04 13:05:24 +0200
commit3344157381505e343b334e2eb6c60c9d3318e5bb (patch)
tree74ca3e30aa81600f7d9e6e7da6caaf4fa9070f6c
parent123e976f3d012b310ac223a54b7ef5213107e33d (diff)
downloadlibubox-3344157381505e343b334e2eb6c60c9d3318e5bb.tar.gz
uloop: add uloop_timeout_remaining64
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>
-rw-r--r--uloop.c12
-rw-r--r--uloop.h1
2 files changed, 13 insertions, 0 deletions
diff --git a/uloop.c b/uloop.c
index 769b6c5..0134fa4 100644
--- 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 36084f5..7ac345e 100644
--- 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);