From: Willy Tarreau Date: Tue, 2 Mar 2021 15:26:05 +0000 (+0100) Subject: MINOR: task: add an application specific flag to the state: TASK_F_USR1 X-Git-Tag: v2.4-dev11~17 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6fa8bcdc7;p=thirdparty%2Fhaproxy.git 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. --- 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 */