From: Willy Tarreau Date: Wed, 7 Sep 2022 14:16:39 +0000 (+0200) Subject: MINOR: sched: store the current profile entry in the thread context X-Git-Tag: v2.7-dev6~86 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1efddfa6bfdcaf57198866db67e49b40442d278f;p=thirdparty%2Fhaproxy.git MINOR: sched: store the current profile entry in the thread context The profile entry that corresponds to the current task/tasklet being profiled is now stored into the thread's context. This will allow it to be accessed from the tasks themselves. This is needed for an upcoming fix. --- diff --git a/include/haproxy/tinfo-t.h b/include/haproxy/tinfo-t.h index 1555439023..10fe7e9887 100644 --- a/include/haproxy/tinfo-t.h +++ b/include/haproxy/tinfo-t.h @@ -131,6 +131,7 @@ struct thread_ctx { uint32_t sched_wake_date; /* current task/tasklet's wake date or 0 */ uint32_t sched_call_date; /* current task/tasklet's call date (valid if sched_wake_date > 0) */ + struct sched_activity *sched_profile_entry; /* profile entry in use by the current task/tasklet, only if sched_wake_date>0 */ uint64_t prev_cpu_time; /* previous per thread CPU time */ uint64_t prev_mono_time; /* previous system wide monotonic time */ diff --git a/src/task.c b/src/task.c index 5cebbbb0f7..3d78680774 100644 --- a/src/task.c +++ b/src/task.c @@ -575,6 +575,7 @@ unsigned int run_tasks_from_lists(unsigned int budgets[]) ((struct tasklet *)t)->wake_date = 0; th_ctx->sched_call_date = now_ns; profile_entry = sched_activity_entry(sched_activity, t->process); + th_ctx->sched_profile_entry = profile_entry; HA_ATOMIC_ADD(&profile_entry->lat_time, lat); HA_ATOMIC_INC(&profile_entry->calls); } @@ -614,6 +615,7 @@ unsigned int run_tasks_from_lists(unsigned int budgets[]) t->wake_date = 0; th_ctx->sched_call_date = now_ns; profile_entry = sched_activity_entry(sched_activity, t->process); + th_ctx->sched_profile_entry = profile_entry; HA_ATOMIC_ADD(&profile_entry->lat_time, lat); HA_ATOMIC_INC(&profile_entry->calls); }