|
@@ -599,6 +599,37 @@ int eloop_is_timeout_registered(eloop_timeout_handler handler,
|
|
|
}
|
|
|
|
|
|
|
|
|
+int eloop_deplete_timeout(unsigned int req_secs, unsigned int req_usecs,
|
|
|
+ eloop_timeout_handler handler, void *eloop_data,
|
|
|
+ void *user_data)
|
|
|
+{
|
|
|
+ struct os_time now, requested, remaining;
|
|
|
+ struct eloop_timeout *tmp;
|
|
|
+
|
|
|
+ dl_list_for_each(tmp, &eloop.timeout, struct eloop_timeout, list) {
|
|
|
+ if (tmp->handler == handler &&
|
|
|
+ tmp->eloop_data == eloop_data &&
|
|
|
+ tmp->user_data == user_data) {
|
|
|
+ requested.sec = req_secs;
|
|
|
+ requested.usec = req_usecs;
|
|
|
+ os_get_time(&now);
|
|
|
+ os_time_sub(&tmp->time, &now, &remaining);
|
|
|
+ if (os_time_before(&requested, &remaining)) {
|
|
|
+ eloop_cancel_timeout(handler, eloop_data,
|
|
|
+ user_data);
|
|
|
+ eloop_register_timeout(requested.sec,
|
|
|
+ requested.usec,
|
|
|
+ handler, eloop_data,
|
|
|
+ user_data);
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
int eloop_replenish_timeout(unsigned int req_secs, unsigned int req_usecs,
|
|
|
eloop_timeout_handler handler, void *eloop_data,
|
|
|
void *user_data)
|