Lines Matching full:timeout
64 struct dl_list timeout;
124 dl_list_init(&eloop.timeout);
302 struct eloop_timeout *timeout, *tmp;
305 timeout = os_zalloc(sizeof(*timeout));
306 if (timeout == NULL)
308 if (os_get_time(&timeout->time) < 0) {
309 os_free(timeout);
312 now_sec = timeout->time.sec;
313 timeout->time.sec += secs;
314 if (timeout->time.sec < now_sec) {
316 * Integer overflow - assume long enough timeout to be assumed
317 * to be infinite, i.e., the timeout would never happen.
319 wpa_printf(MSG_DEBUG, "ELOOP: Too long timeout (secs=%u) to "
321 os_free(timeout);
324 timeout->time.usec += usecs;
325 while (timeout->time.usec >= 1000000) {
326 timeout->time.sec++;
327 timeout->time.usec -= 1000000;
329 timeout->eloop_data = eloop_data;
330 timeout->user_data = user_data;
331 timeout->handler = handler;
332 wpa_trace_add_ref(timeout, eloop, eloop_data);
333 wpa_trace_add_ref(timeout, user, user_data);
334 wpa_trace_record(timeout);
337 dl_list_for_each(tmp, &eloop.timeout, struct eloop_timeout, list) {
338 if (os_time_before(&timeout->time, &tmp->time)) {
339 dl_list_add(tmp->list.prev, &timeout->list);
343 dl_list_add_tail(&eloop.timeout, &timeout->list);
349 static void eloop_remove_timeout(struct eloop_timeout *timeout)
351 dl_list_del(&timeout->list);
352 wpa_trace_remove_ref(timeout, eloop, timeout->eloop_data);
353 wpa_trace_remove_ref(timeout, user, timeout->user_data);
354 os_free(timeout);
361 struct eloop_timeout *timeout, *prev;
364 dl_list_for_each_safe(timeout, prev, &eloop.timeout,
366 if (timeout->handler == handler &&
367 (timeout->eloop_data == eloop_data ||
369 (timeout->user_data == user_data ||
371 eloop_remove_timeout(timeout);
385 dl_list_for_each(tmp, &eloop.timeout, struct eloop_timeout, list) {
517 (!dl_list_empty(&eloop.timeout) || eloop.readers.count > 0 ||
519 struct eloop_timeout *timeout;
520 timeout = dl_list_first(&eloop.timeout, struct eloop_timeout,
522 if (timeout) {
524 if (os_time_before(&now, &timeout->time))
525 os_time_sub(&timeout->time, &now, &tv);
536 timeout ? &_tv : NULL);
544 timeout = dl_list_first(&eloop.timeout, struct eloop_timeout,
546 if (timeout) {
548 if (!os_time_before(&now, &timeout->time)) {
549 void *eloop_data = timeout->eloop_data;
550 void *user_data = timeout->user_data;
552 timeout->handler;
553 eloop_remove_timeout(timeout);
582 struct eloop_timeout *timeout, *prev;
586 dl_list_for_each_safe(timeout, prev, &eloop.timeout,
589 sec = timeout->time.sec - now.sec;
590 usec = timeout->time.usec - now.usec;
591 if (timeout->time.usec < now.usec) {
595 wpa_printf(MSG_INFO, "ELOOP: remaining timeout: %d.%06d "
597 sec, usec, timeout->eloop_data, timeout->user_data,
598 timeout->handler);
599 wpa_trace_dump_funcname("eloop unregistered timeout handler",
600 timeout->handler);
601 wpa_trace_dump("eloop timeout", timeout);
602 eloop_remove_timeout(timeout);