[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [xen staging] xen/rt: Clean up trace handling
commit df50666449a4ef0bc28f3118dc8adf1ecf5ba4a1 Author: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> AuthorDate: Fri Sep 17 16:28:19 2021 +0100 Commit: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> CommitDate: Mon May 20 18:29:44 2024 +0100 xen/rt: Clean up trace handling Most uses of bitfields and __packed are unnecessary. There is also no need to cast 'd' to (unsigned char *) before passing it to a function taking void *. Switch to new trace_time() API. No functional change. Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> Reviewed-by: Dario Faggioli <dfaggioli@xxxxxxxx> Reviewed-by: George Dunlap <george.dunlap@xxxxxxxxx> --- xen/common/sched/rt.c | 99 ++++++++++++++++++++++++--------------------------- 1 file changed, 47 insertions(+), 52 deletions(-) diff --git a/xen/common/sched/rt.c b/xen/common/sched/rt.c index b279f957f6..f368e0fdd5 100644 --- a/xen/common/sched/rt.c +++ b/xen/common/sched/rt.c @@ -455,21 +455,21 @@ rt_update_deadline(s_time_t now, struct rt_unit *svc) svc->cur_budget = svc->budget; svc->priority_level = 0; - /* TRACE */ + if ( unlikely(tb_init_done) ) { - struct __packed { - unsigned unit:16, dom:16; - unsigned priority_level; + struct { + uint16_t unit, dom; + uint32_t priority_level; uint64_t cur_deadline, cur_budget; - } d; - d.dom = svc->unit->domain->domain_id; - d.unit = svc->unit->unit_id; - d.priority_level = svc->priority_level; - d.cur_deadline = (uint64_t) svc->cur_deadline; - d.cur_budget = (uint64_t) svc->cur_budget; - trace_var(TRC_RTDS_BUDGET_REPLENISH, 1, - sizeof(d), - (unsigned char *) &d); + } d = { + .dom = svc->unit->domain->domain_id, + .unit = svc->unit->unit_id, + .priority_level = svc->priority_level, + .cur_deadline = svc->cur_deadline, + .cur_budget = svc->cur_budget, + }; + + trace_time(TRC_RTDS_BUDGET_REPLENISH, sizeof(d), &d); } return; @@ -986,7 +986,7 @@ burn_budget(const struct scheduler *ops, struct rt_unit *svc, s_time_t now) } } - /* TRACE */ + if ( unlikely(tb_init_done) ) { struct __packed { uint16_t unit, dom; @@ -1003,9 +1003,7 @@ burn_budget(const struct scheduler *ops, struct rt_unit *svc, s_time_t now) .has_extratime = !!(svc->flags & RTDS_extratime), }; - trace_var(TRC_RTDS_BUDGET_BURN, 1, - sizeof(d), - (unsigned char *) &d); + trace_time(TRC_RTDS_BUDGET_BURN, sizeof(d), &d); } } @@ -1040,22 +1038,19 @@ runq_pick(const struct scheduler *ops, const cpumask_t *mask, unsigned int cpu) break; } - /* TRACE */ + if ( unlikely(tb_init_done) && svc ) { - if( svc != NULL ) - { - struct __packed { - unsigned unit:16, dom:16; - uint64_t cur_deadline, cur_budget; - } d; - d.dom = svc->unit->domain->domain_id; - d.unit = svc->unit->unit_id; - d.cur_deadline = (uint64_t) svc->cur_deadline; - d.cur_budget = (uint64_t) svc->cur_budget; - trace_var(TRC_RTDS_RUNQ_PICK, 1, - sizeof(d), - (unsigned char *) &d); - } + struct __packed { + uint16_t unit, dom; + uint64_t cur_deadline, cur_budget; + } d = { + .unit = svc->unit->unit_id, + .dom = svc->unit->domain->domain_id, + .cur_deadline = svc->cur_deadline, + .cur_budget = svc->cur_budget, + }; + + trace_time(TRC_RTDS_RUNQ_PICK, sizeof(d), &d); } return svc; @@ -1076,18 +1071,19 @@ rt_schedule(const struct scheduler *ops, struct sched_unit *currunit, struct rt_unit *snext = NULL; bool migrated = false; - /* TRACE */ + if ( unlikely(tb_init_done) ) { - struct __packed { - unsigned cpu:16, tasklet:8, tickled:4, idle:4; - } d; - d.cpu = cur_cpu; - d.tasklet = tasklet_work_scheduled; - d.tickled = cpumask_test_cpu(sched_cpu, &prv->tickled); - d.idle = is_idle_unit(currunit); - trace_var(TRC_RTDS_SCHEDULE, 1, - sizeof(d), - (unsigned char *)&d); + struct { + uint16_t cpu; + uint8_t tasklet, tickled:4, idle:4; + } d = { + .cpu = cur_cpu, + .tasklet = tasklet_work_scheduled, + .tickled = cpumask_test_cpu(sched_cpu, &prv->tickled), + .idle = is_idle_unit(currunit), + }; + + trace_time(TRC_RTDS_SCHEDULE, sizeof(d), &d); } /* clear ticked bit now that we've been scheduled */ @@ -1098,7 +1094,7 @@ rt_schedule(const struct scheduler *ops, struct sched_unit *currunit, if ( tasklet_work_scheduled ) { - trace_var(TRC_RTDS_SCHED_TASKLET, 1, 0, NULL); + TRACE_TIME(TRC_RTDS_SCHED_TASKLET); snext = rt_unit(sched_idle_unit(sched_cpu)); } else @@ -1250,16 +1246,15 @@ runq_tickle(const struct scheduler *ops, const struct rt_unit *new) SCHED_STAT_CRANK(tickled_no_cpu); return; out: - /* TRACE */ + if ( unlikely(tb_init_done) ) { struct { - unsigned cpu:16, pad:16; - } d; - d.cpu = cpu_to_tickle; - d.pad = 0; - trace_var(TRC_RTDS_TICKLE, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t cpu, _pad; + } d = { + .cpu = cpu_to_tickle, + }; + + trace_time(TRC_RTDS_TICKLE, sizeof(d), &d); } cpumask_set_cpu(cpu_to_tickle, &prv->tickled); -- generated by git-patchbot for /home/xen/git/xen.git#staging
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |