Lines Matching +full:inter +full:- +full:data
1 /*-
2 * SPDX-License-Identifier: ISC
5 * Copyright (c) 1995-1999 by Internet Software Consortium
15 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
20 /* ev_timers.c - implement timers for the eventlib
87 x.tv_nsec -= BILLION; in evAddTime()
96 x.tv_sec = minuend.tv_sec - subtrahend.tv_sec; in evSubTime()
98 x.tv_nsec = minuend.tv_nsec - subtrahend.tv_nsec; in evSubTime()
100 x.tv_nsec = BILLION - subtrahend.tv_nsec + minuend.tv_nsec; in evSubTime()
101 x.tv_sec--; in evSubTime()
108 long x = a.tv_sec - b.tv_sec; in evCmpTime()
111 x = a.tv_nsec - b.tv_nsec; in evCmpTime()
112 return (x < 0L ? (-1) : x > 0L ? (1) : (0)); in evCmpTime()
152 return (ctx->lastEventTime); in evLastEventTime()
182 struct timespec inter, in evSetTimer() argument
189 "evSetTimer(ctx %p, func %p, uap %p, due %ld.%09ld, inter %ld.%09ld)\n", in evSetTimer()
192 (long)inter.tv_sec, inter.tv_nsec); in evSetTimer()
201 if (inter.tv_nsec >= BILLION) in evSetTimer()
207 if (inter.tv_sec < 0 || inter.tv_nsec < 0 || inter.tv_nsec >= BILLION) in evSetTimer()
217 id->func = func; in evSetTimer()
218 id->uap = uap; in evSetTimer()
219 id->due = due; in evSetTimer()
220 id->inter = inter; in evSetTimer()
222 if (heap_insert(ctx->timers, id) < 0) in evSetTimer()
223 return (-1); in evSetTimer()
227 opaqueID->opaque = id; in evSetTimer()
229 if (ctx->debug > 7) { in evSetTimer()
231 (void) heap_for_each(ctx->timers, print_timer, (void *)ctx); in evSetTimer()
242 if (ctx->cur != NULL && in evClearTimer()
243 ctx->cur->type == Timer && in evClearTimer()
244 ctx->cur->u.timer.this == del) { in evClearTimer()
250 del->inter = evConsTime(0, 0); in evClearTimer()
254 if (heap_element(ctx->timers, del->index) != del) in evClearTimer()
257 if (heap_delete(ctx->timers, del->index) < 0) in evClearTimer()
258 return (-1); in evClearTimer()
261 if (ctx->debug > 7) { in evClearTimer()
263 (void) heap_for_each(ctx->timers, print_timer, (void *)ctx); in evClearTimer()
281 if (heap_element(ctx->timers, timer->index) != timer) in evConfigTimer()
285 timer->mode |= EV_TMR_RATE; in evConfigTimer()
287 timer->mode &= ~EV_TMR_RATE; in evConfigTimer()
300 struct timespec inter in evResetTimer() argument
307 if (heap_element(ctx->timers, timer->index) != timer) in evResetTimer()
317 if (inter.tv_nsec >= BILLION) in evResetTimer()
323 if (inter.tv_sec < 0 || inter.tv_nsec < 0 || inter.tv_nsec >= BILLION) in evResetTimer()
327 old_due = timer->due; in evResetTimer()
329 timer->func = func; in evResetTimer()
330 timer->uap = uap; in evResetTimer()
331 timer->due = due; in evResetTimer()
332 timer->inter = inter; in evResetTimer()
335 case -1: in evResetTimer()
336 result = heap_increased(ctx->timers, timer->index); in evResetTimer()
342 result = heap_decreased(ctx->timers, timer->index); in evResetTimer()
346 if (ctx->debug > 7) { in evResetTimer()
348 (void) heap_for_each(ctx->timers, print_timer, (void *)ctx); in evResetTimer()
366 tt->func = func; in evSetIdleTimer()
367 tt->uap = uap; in evSetIdleTimer()
368 tt->lastTouched = ctx->lastEventTime; in evSetIdleTimer()
369 tt->max_idle = max_idle; in evSetIdleTimer()
372 evAddTime(ctx->lastEventTime, max_idle), in evSetIdleTimer()
375 return (-1); in evSetIdleTimer()
378 tt->timer = opaqueID->opaque; in evSetIdleTimer()
386 idle_timer *tt = del->uap; in evClearIdleTimer()
401 idle_timer *tt = timer->uap; in evResetIdleTimer()
403 tt->func = func; in evResetIdleTimer()
404 tt->uap = uap; in evResetIdleTimer()
405 tt->lastTouched = ctx->lastEventTime; in evResetIdleTimer()
406 tt->max_idle = max_idle; in evResetIdleTimer()
409 evAddTime(ctx->lastEventTime, max_idle), in evResetIdleTimer()
417 idle_timer *tt = t->uap; in evTouchIdleTimer()
419 tt->lastTouched = ctx->lastEventTime; in evTouchIdleTimer()
436 (void) heap_for_each(ctx->timers, free_timer, NULL); in evDestroyTimers()
437 (void) heap_free(ctx->timers); in evDestroyTimers()
448 return (evCmpTime(a_timer->due, b_timer->due) < 0); in due_sooner()
456 timer->index = index; in set_index()
475 " func %p, uap %p, due %ld.%09ld, inter %ld.%09ld\n", in print_timer()
476 cur->func, cur->uap, in print_timer()
477 (long)cur->due.tv_sec, cur->due.tv_nsec, in print_timer()
478 (long)cur->inter.tv_sec, cur->inter.tv_nsec); in print_timer()
485 struct timespec inter in idle_timeout() argument
492 UNUSED(inter); in idle_timeout()
494 idle = evSubTime(ctx->lastEventTime, this->lastTouched); in idle_timeout()
495 if (evCmpTime(idle, this->max_idle) >= 0) { in idle_timeout()
496 (this->func)(opaqueCtx, this->uap, this->timer->due, in idle_timeout()
497 this->max_idle); in idle_timeout()
502 this->timer->inter = evConsTime(0, 0); in idle_timeout()
506 this->timer->inter = evSubTime(this->max_idle, idle); in idle_timeout()