diff --git a/include/haproxy/task-t.h b/include/haproxy/task-t.h index 5debef652..62252e748 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 a99d30ab6..bc8ecf4cf 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 */