From 116ef223d2d85ec87bb1244cba3d65fa21cb3793 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 23 Jun 2020 16:35:38 +0200 Subject: [PATCH] MINOR: task: add a new pointer to current tasklet queue In task_per_thread[] we now have current_queue which is a pointer to the current tasklet_list entry being evaluated. This will be used to know the class under which the current task/tasklet is currently running. --- include/haproxy/task-t.h | 1 + src/task.c | 3 +++ 2 files changed, 4 insertions(+) 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; }