mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2025-08-07 15:47:01 +02:00
[MINOR] task: new function task_schedule() to schedule a wake up
This function is used when a task should be woken up at most at a given date. This will be used with rate shapers.
This commit is contained in:
parent
d634e7c673
commit
26e4881a2d
@ -224,6 +224,23 @@ static inline void task_queue(struct task *task)
|
|||||||
__task_queue(task);
|
__task_queue(task);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Ensure <task> will be woken up at most at <when>. If the task is already in
|
||||||
|
* the run queue (but not running), nothing is done. It may be used that way
|
||||||
|
* with a delay : task_schedule(task, tick_add(now_ms, delay));
|
||||||
|
*/
|
||||||
|
static inline void task_schedule(struct task *task, int when)
|
||||||
|
{
|
||||||
|
if (task_in_rq(task))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (task_in_wq(task))
|
||||||
|
when = tick_first(when, task->expire);
|
||||||
|
|
||||||
|
task->expire = when;
|
||||||
|
if (!task_in_wq(task) || tick_is_lt(task->expire, task->wq.key))
|
||||||
|
__task_queue(task);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This does 4 things :
|
* This does 4 things :
|
||||||
* - wake up all expired tasks
|
* - wake up all expired tasks
|
||||||
|
Loading…
Reference in New Issue
Block a user