mirror of https://github.com/thesofproject/sof.git
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 <tomasz.lauda@linux.intel.com>
This commit is contained in:
parent
e5bc088e04
commit
8134a46705
|
@ -378,14 +378,13 @@ void work_schedule(struct work_queue *queue, struct work *w, uint64_t timeout)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
w->timeout = queue->ticks_per_msec * timeout / 1000;
|
||||||
|
|
||||||
/* convert timeout micro seconds to CPU clock ticks */
|
/* convert timeout micro seconds to CPU clock ticks */
|
||||||
if (w->flags & WORK_SYNC)
|
if (w->flags & WORK_SYNC)
|
||||||
w->timeout =
|
w->timeout += work_get_timer(queue);
|
||||||
queue_calc_next_timeout(queue, work_get_timer(queue));
|
|
||||||
else
|
else
|
||||||
w->timeout =
|
w->timeout += work_shared_ctx->last_tick;
|
||||||
queue_calc_next_timeout(queue,
|
|
||||||
work_shared_ctx->last_tick);
|
|
||||||
|
|
||||||
/* insert work into list */
|
/* insert work into list */
|
||||||
list_item_prepend(&w->list, &queue->work);
|
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;
|
uint64_t time;
|
||||||
|
|
||||||
|
time = queue->ticks_per_msec * timeout / 1000;
|
||||||
|
|
||||||
/* convert timeout micro seconds to CPU clock ticks */
|
/* convert timeout micro seconds to CPU clock ticks */
|
||||||
if (w->flags & WORK_SYNC)
|
if (w->flags & WORK_SYNC)
|
||||||
time = queue_calc_next_timeout(queue, work_get_timer(queue));
|
time += work_get_timer(queue);
|
||||||
else
|
else
|
||||||
time = queue_calc_next_timeout(queue,
|
time += work_shared_ctx->last_tick;
|
||||||
work_shared_ctx->last_tick);
|
|
||||||
|
|
||||||
reschedule(queue, w, time);
|
reschedule(queue, w, time);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue