MINOR: tasks: make current_queue an index instead of a pointer

It will be convenient to have the tasklet queue number soon, better make
current_queue an index rather than a pointer to the queue. When not currently
running (e.g. from I/O), the index is -1.
diff --git a/include/haproxy/task-t.h b/include/haproxy/task-t.h
index 7d23f68..334547b 100644
--- a/include/haproxy/task-t.h
+++ b/include/haproxy/task-t.h
@@ -77,7 +77,7 @@
 	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 */
+	int current_queue;      /* points to current tasklet list being run, -1 if none */
 	__attribute__((aligned(64))) char end[0];
 };
 
diff --git a/include/haproxy/task.h b/include/haproxy/task.h
index c60bbd2..acfa2c3 100644
--- a/include/haproxy/task.h
+++ b/include/haproxy/task.h
@@ -329,17 +329,17 @@
 		/* this tasklet runs on the caller thread */
 		if (LIST_ISEMPTY(&tl->list)) {
 			if (tl->state & TASK_SELF_WAKING) {
-				LIST_ADDQ(&task_per_thread[tid].tasklets[TL_BULK], &tl->list);
+				LIST_ADDQ(&sched->tasklets[TL_BULK], &tl->list);
 			}
 			else if ((struct task *)tl == sched->current) {
 				_HA_ATOMIC_OR(&tl->state, TASK_SELF_WAKING);
-				LIST_ADDQ(&task_per_thread[tid].tasklets[TL_BULK], &tl->list);
+				LIST_ADDQ(&sched->tasklets[TL_BULK], &tl->list);
 			}
-			else if (!sched->current) {
-				LIST_ADDQ(&task_per_thread[tid].tasklets[TL_URGENT], &tl->list);
+			else if (sched->current_queue < 0) {
+				LIST_ADDQ(&sched->tasklets[TL_URGENT], &tl->list);
 			}
 			else {
-				LIST_ADDQ(sched->current_queue, &tl->list);
+				LIST_ADDQ(&sched->tasklets[sched->current_queue], &tl->list);
 			}
 
 			_HA_ATOMIC_ADD(&tasks_run_queue, 1);
diff --git a/src/task.c b/src/task.c
index ed0416c..1bb2ce4 100644
--- a/src/task.c
+++ b/src/task.c
@@ -330,7 +330,6 @@
 	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));
@@ -402,7 +401,6 @@
 		done++;
 	}
 
-	sched->current_queue = NULL;
 	return done;
 }
 
@@ -551,8 +549,11 @@
 
 	/* execute tasklets in each queue */
 	for (queue = 0; queue < TL_CLASSES; queue++) {
-		if (max[queue] > 0)
+		if (max[queue] > 0) {
+			tt->current_queue = queue;
 			max_processed -= run_tasks_from_list(&tt->tasklets[queue], max[queue]);
+			tt->current_queue = -1;
+		}
 	}
 
 	/* some tasks may have woken other ones up */