diff --git a/include/haproxy/task-t.h b/include/haproxy/task-t.h index 2ea2b3ca5..7d23f68fe 100644 --- a/include/haproxy/task-t.h +++ b/include/haproxy/task-t.h @@ -77,6 +77,7 @@ struct task_per_thread { int task_list_size; /* Number of tasks among the tasklets */ int rqueue_size; /* Number of elements in the per-thread run queue */ struct task *current; /* current task (not tasklet) */ + struct list *current_queue; /* points to current tasklet list being run */ __attribute__((aligned(64))) char end[0]; }; diff --git a/src/task.c b/src/task.c index 2097555f1..1f7fd5342 100644 --- a/src/task.c +++ b/src/task.c @@ -330,6 +330,7 @@ int run_tasks_from_list(struct list *list, int max) void *ctx; int done = 0; + sched->current_queue = list; while (done < max && !LIST_ISEMPTY(list)) { t = (struct task *)LIST_ELEM(list->n, struct tasklet *, list); state = (t->state & (TASK_SHARED_WQ|TASK_SELF_WAKING)); @@ -400,6 +401,8 @@ int run_tasks_from_list(struct list *list, int max) } done++; } + + sched->current_queue = NULL; return done; }