summaryrefslogtreecommitdiffstats
path: root/usr.bin/dig/lib/isc/timer.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/dig/lib/isc/timer.c')
-rw-r--r--usr.bin/dig/lib/isc/timer.c98
1 files changed, 20 insertions, 78 deletions
diff --git a/usr.bin/dig/lib/isc/timer.c b/usr.bin/dig/lib/isc/timer.c
index 5351aab0de0..44c5c31debe 100644
--- a/usr.bin/dig/lib/isc/timer.c
+++ b/usr.bin/dig/lib/isc/timer.c
@@ -14,7 +14,7 @@
* PERFORMANCE OF THIS SOFTWARE.
*/
-/* $Id: timer.c,v 1.8 2020/02/15 17:59:55 florian Exp $ */
+/* $Id: timer.c,v 1.9 2020/02/16 08:05:41 florian Exp $ */
/*! \file */
@@ -113,8 +113,6 @@ schedule(isc__timer_t *timer, isc_time_t *now, isc_boolean_t signal_ok) {
* Note: the caller must ensure locking.
*/
- REQUIRE(timer->type != isc_timertype_inactive);
-
UNUSED(signal_ok);
manager = timer->manager;
@@ -122,23 +120,14 @@ schedule(isc__timer_t *timer, isc_time_t *now, isc_boolean_t signal_ok) {
/*
* Compute the new due time.
*/
- if (timer->type != isc_timertype_once) {
- result = isc_time_add(now, &timer->interval, &due);
- if (result != ISC_R_SUCCESS)
- return (result);
- if (timer->type == isc_timertype_limited &&
- isc_time_compare(&timer->expires, &due) < 0)
- due = timer->expires;
- } else {
- if (isc_time_isepoch(&timer->idle))
- due = timer->expires;
- else if (isc_time_isepoch(&timer->expires))
- due = timer->idle;
- else if (isc_time_compare(&timer->idle, &timer->expires) < 0)
- due = timer->idle;
- else
- due = timer->expires;
- }
+ if (isc_time_isepoch(&timer->idle))
+ due = timer->expires;
+ else if (isc_time_isepoch(&timer->expires))
+ due = timer->idle;
+ else if (isc_time_compare(&timer->idle, &timer->expires) < 0)
+ due = timer->idle;
+ else
+ due = timer->expires;
/*
* Schedule the timer.
@@ -249,26 +238,14 @@ isc__timer_create(isc_timermgr_t *manager0, isc_timertype_t type,
expires = isc_time_epoch;
if (interval == NULL)
interval = interval_zero;
- REQUIRE(type == isc_timertype_inactive ||
- !(isc_time_isepoch(expires) && interval_iszero(interval)));
+ REQUIRE(!(isc_time_isepoch(expires) && interval_iszero(interval)));
REQUIRE(timerp != NULL && *timerp == NULL);
- REQUIRE(type != isc_timertype_limited ||
- !(isc_time_isepoch(expires) || interval_iszero(interval)));
+ REQUIRE(!(isc_time_isepoch(expires) || interval_iszero(interval)));
/*
* Get current time.
*/
- if (type != isc_timertype_inactive) {
- TIME_NOW(&now);
- } else {
- /*
- * We don't have to do this, but it keeps the compiler from
- * complaining about "now" possibly being used without being
- * set, even though it will never actually happen.
- */
- isc_time_settoepoch(&now);
- }
-
+ TIME_NOW(&now);
timer = malloc(sizeof(*timer));
if (timer == NULL)
@@ -283,8 +260,7 @@ isc__timer_create(isc_timermgr_t *manager0, isc_timertype_t type,
free(timer);
return (result);
}
- } else
- isc_time_settoepoch(&timer->idle);
+ }
timer->type = type;
timer->expires = *expires;
@@ -308,10 +284,7 @@ isc__timer_create(isc_timermgr_t *manager0, isc_timertype_t type,
timer->common.impmagic = TIMER_MAGIC;
timer->common.magic = ISCAPI_TIMER_MAGIC;
- if (type != isc_timertype_inactive)
- result = schedule(timer, &now, ISC_TRUE);
- else
- result = ISC_R_SUCCESS;
+ result = schedule(timer, &now, ISC_TRUE);
if (result == ISC_R_SUCCESS)
APPEND(manager->timers, timer, link);
@@ -352,24 +325,13 @@ isc__timer_reset(isc_timer_t *timer0, isc_timertype_t type,
expires = isc_time_epoch;
if (interval == NULL)
interval = interval_zero;
- REQUIRE(type == isc_timertype_inactive ||
- !(isc_time_isepoch(expires) && interval_iszero(interval)));
- REQUIRE(type != isc_timertype_limited ||
- !(isc_time_isepoch(expires) || interval_iszero(interval)));
+ REQUIRE(!(isc_time_isepoch(expires) && interval_iszero(interval)));
+ REQUIRE(!(isc_time_isepoch(expires) || interval_iszero(interval)));
/*
* Get current time.
*/
- if (type != isc_timertype_inactive) {
- TIME_NOW(&now);
- } else {
- /*
- * We don't have to do this, but it keeps the compiler from
- * complaining about "now" possibly being used without being
- * set, even though it will never actually happen.
- */
- isc_time_settoepoch(&now);
- }
+ TIME_NOW(&now);
if (purge)
(void)isc_task_purgerange(timer->task,
@@ -388,11 +350,7 @@ isc__timer_reset(isc_timer_t *timer0, isc_timertype_t type,
}
if (result == ISC_R_SUCCESS) {
- if (type == isc_timertype_inactive) {
- deschedule(timer);
- result = ISC_R_SUCCESS;
- } else
- result = schedule(timer, &now, ISC_TRUE);
+ result = schedule(timer, &now, ISC_TRUE);
}
return (result);
@@ -483,25 +441,9 @@ dispatch(isc__timermgr_t *manager, isc_time_t *now) {
while (manager->nscheduled > 0 && !done) {
timer = isc_heap_element(manager->heap, 1);
- INSIST(timer != NULL && timer->type != isc_timertype_inactive);
+ INSIST(timer != NULL);
if (isc_time_compare(now, &timer->due) >= 0) {
- if (timer->type == isc_timertype_ticker) {
- type = ISC_TIMEREVENT_TICK;
- post_event = ISC_TRUE;
- need_schedule = ISC_TRUE;
- } else if (timer->type == isc_timertype_limited) {
- int cmp;
- cmp = isc_time_compare(now, &timer->expires);
- if (cmp >= 0) {
- type = ISC_TIMEREVENT_LIFE;
- post_event = ISC_TRUE;
- need_schedule = ISC_FALSE;
- } else {
- type = ISC_TIMEREVENT_TICK;
- post_event = ISC_TRUE;
- need_schedule = ISC_TRUE;
- }
- } else if (!isc_time_isepoch(&timer->expires) &&
+ if (!isc_time_isepoch(&timer->expires) &&
isc_time_compare(now,
&timer->expires) >= 0) {
type = ISC_TIMEREVENT_LIFE;