From: Willy Tarreau Date: Tue, 30 Jun 2020 09:48:48 +0000 (+0200) Subject: MINOR: sched: make sched->task_list_size atomic X-Git-Tag: v2.2-dev12~31 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d99177f86d00f87f74ceaa498d8f3ccaa81a3c95;p=thirdparty%2Fhaproxy.git MINOR: sched: make sched->task_list_size atomic We'll need to update it from foreign threads in order to throw killed tasks and maintain correct accounting, so let's make it atomic. --- diff --git a/src/task.c b/src/task.c index 9f2e9d5df6..b65000b8f3 100644 --- a/src/task.c +++ b/src/task.c @@ -405,7 +405,7 @@ unsigned int run_tasks_from_lists(unsigned int budgets[]) /* OK then this is a regular task */ - task_per_thread[tid].task_list_size--; + _HA_ATOMIC_SUB(&task_per_thread[tid].task_list_size, 1); if (unlikely(t->call_date)) { uint64_t now_ns = now_mono_time(); @@ -585,7 +585,7 @@ void process_runnable_tasks() /* And add it to the local task list */ tasklet_insert_into_tasklet_list(&tt->tasklets[TL_NORMAL], (struct tasklet *)t); tt->tl_class_mask |= 1 << TL_NORMAL; - tt->task_list_size++; + _HA_ATOMIC_ADD(&tt->task_list_size, 1); activity[tid].tasksw++; }