From 6fa8bcdc785c29cd3a29c14d2038f38b5547eff0 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Tue, 2 Mar 2021 16:26:05 +0100 Subject: [PATCH] MINOR: task: add an application specific flag to the state: TASK_F_USR1 This flag will be usable by any application. It will be preserved across wakeups so the application can use it to do various stuff. Some I/O handlers will soon benefit from this. --- include/haproxy/task-t.h | 3 ++- src/task.c | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/include/haproxy/task-t.h b/include/haproxy/task-t.h index 5debef652f..62252e748f 100644 --- a/include/haproxy/task-t.h +++ b/include/haproxy/task-t.h @@ -56,7 +56,8 @@ TASK_WOKEN_RES) #define TASK_F_TASKLET 0x00008000 /* nature of this task: 0=task 1=tasklet */ -/* unused: 0x10000..0x80000000 */ +#define TASK_F_USR1 0x00010000 /* preserved user flag 1, application-specific, def:0 */ +/* unused: 0x20000..0x80000000 */ enum { diff --git a/src/task.c b/src/task.c index a99d30ab62..bc8ecf4cfd 100644 --- a/src/task.c +++ b/src/task.c @@ -487,7 +487,7 @@ unsigned int run_tasks_from_lists(unsigned int budgets[]) budgets[queue]--; t = (struct task *)LIST_ELEM(tl_queues[queue].n, struct tasklet *, list); - state = t->state & (TASK_SHARED_WQ|TASK_SELF_WAKING|TASK_HEAVY|TASK_F_TASKLET|TASK_KILLED); + state = t->state & (TASK_SHARED_WQ|TASK_SELF_WAKING|TASK_HEAVY|TASK_F_TASKLET|TASK_KILLED|TASK_F_USR1); ti->flags &= ~TI_FL_STUCK; // this thread is still running activity[tid].ctxsw++; @@ -533,7 +533,7 @@ unsigned int run_tasks_from_lists(unsigned int budgets[]) LIST_DEL_INIT(&((struct tasklet *)t)->list); __ha_barrier_store(); - state = _HA_ATOMIC_XCHG(&t->state, state | TASK_RUNNING); + state = _HA_ATOMIC_XCHG(&t->state, state|TASK_RUNNING|TASK_F_USR1); __ha_barrier_atomic_store(); /* OK then this is a regular task */ -- 2.39.5