uloop: add uloop_timeout_pending() function to determine the remaining time of an...
authorJo-Philipp Wich <jow@openwrt.org>
Tue, 22 Jan 2013 14:50:09 +0000 (15:50 +0100)
committerJo-Philipp Wich <jow@openwrt.org>
Wed, 23 Jan 2013 18:32:45 +0000 (19:32 +0100)
uloop.c
uloop.h

diff --git a/uloop.c b/uloop.c
index 4095d5b4069cfc768b6c6774123d79bc73a88aa8..3a62b6272754ac63d0c52f54be57feb006a337dd 100644 (file)
--- a/uloop.c
+++ b/uloop.c
@@ -387,6 +387,18 @@ int uloop_timeout_cancel(struct uloop_timeout *timeout)
        return 0;
 }
 
+int uloop_timeout_pending(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 0a20eb9805088c8fff62f970cb2ff7234923f600..8fb890deb76cc35c997b3df73237a51bbcc0439e 100644 (file)
--- a/uloop.h
+++ b/uloop.h
@@ -87,6 +87,7 @@ int uloop_fd_delete(struct uloop_fd *sock);
 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_pending(struct uloop_timeout *timeout);
 
 int uloop_process_add(struct uloop_process *p);
 int uloop_process_delete(struct uloop_process *p);