mirror of
http://git.haproxy.org/git/haproxy.git
synced 2026-02-11 14:32:48 +02:00
CLEANUP: task: move the tree root detection from __task_wakeup() to task_wakeup()
Historically we used to call __task_wakeup() with a known tree root but this is not the case and the code has remained needlessly complicated with the root calculation in task_wakeup() passed in argument to __task_wakeup() which compares it again. Let's get rid of this and just move the detection code there. This eliminates some ifdefs and allows to simplify the test conditions quite a bit.
This commit is contained in:
15
src/task.c
15
src/task.c
@@ -115,14 +115,16 @@ void task_kill(struct task *t)
|
||||
* The task must not already be in the run queue. If unsure, use the safer
|
||||
* task_wakeup() function.
|
||||
*/
|
||||
void __task_wakeup(struct task *t, struct eb_root *root)
|
||||
void __task_wakeup(struct task *t)
|
||||
{
|
||||
#ifdef USE_THREAD
|
||||
if (root == &rqueue) {
|
||||
HA_SPIN_LOCK(TASK_RQ_LOCK, &rq_lock);
|
||||
}
|
||||
struct eb_root *root = &sched->rqueue;
|
||||
|
||||
#ifdef USE_THREAD
|
||||
if (t->thread_mask != tid_bit && global.nbthread != 1) {
|
||||
root = &rqueue;
|
||||
|
||||
HA_SPIN_LOCK(TASK_RQ_LOCK, &rq_lock);
|
||||
|
||||
if (root == &rqueue) {
|
||||
global_tasks_mask |= t->thread_mask;
|
||||
grq_total++;
|
||||
t->rq.key = ++global_rqueue_ticks;
|
||||
@@ -146,6 +148,7 @@ void __task_wakeup(struct task *t, struct eb_root *root)
|
||||
t->call_date = now_mono_time();
|
||||
|
||||
eb32sc_insert(root, &t->rq, t->thread_mask);
|
||||
|
||||
#ifdef USE_THREAD
|
||||
if (root == &rqueue) {
|
||||
_HA_ATOMIC_OR(&t->state, TASK_GLOBAL);
|
||||
|
||||
Reference in New Issue
Block a user