From 8134a46705c91ef7dfca9439913b1686096a7a26 Mon Sep 17 00:00:00 2001 From: Tomasz Lauda Date: Wed, 23 Jan 2019 15:36:14 +0100 Subject: [PATCH] work: fix to the previous change for ASYNC tasks Fixes previous change for ASYNC tasks. By mistake it didn't take into account provided timeout. Signed-off-by: Tomasz Lauda --- src/lib/work.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/lib/work.c b/src/lib/work.c index b6874785a..78c590a24 100644 --- a/src/lib/work.c +++ b/src/lib/work.c @@ -378,14 +378,13 @@ void work_schedule(struct work_queue *queue, struct work *w, uint64_t timeout) goto out; } + w->timeout = queue->ticks_per_msec * timeout / 1000; + /* convert timeout micro seconds to CPU clock ticks */ if (w->flags & WORK_SYNC) - w->timeout = - queue_calc_next_timeout(queue, work_get_timer(queue)); + w->timeout += work_get_timer(queue); else - w->timeout = - queue_calc_next_timeout(queue, - work_shared_ctx->last_tick); + w->timeout += work_shared_ctx->last_tick; /* insert work into list */ list_item_prepend(&w->list, &queue->work); @@ -434,12 +433,13 @@ void work_reschedule(struct work_queue *queue, struct work *w, uint64_t timeout) { uint64_t time; + time = queue->ticks_per_msec * timeout / 1000; + /* convert timeout micro seconds to CPU clock ticks */ if (w->flags & WORK_SYNC) - time = queue_calc_next_timeout(queue, work_get_timer(queue)); + time += work_get_timer(queue); else - time = queue_calc_next_timeout(queue, - work_shared_ctx->last_tick); + time += work_shared_ctx->last_tick; reschedule(queue, w, time); }