From nobody Mon Feb 9 19:07:48 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) client-ip=192.237.175.120; envelope-from=xen-devel-bounces@lists.xenproject.org; helo=lists.xenproject.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass(p=reject dis=none) header.from=citrix.com ARC-Seal: i=1; a=rsa-sha256; t=1710779777; cv=none; d=zohomail.com; s=zohoarc; b=EPBGpI2rH1a8nmEAzl2kte3sju4HBT4ijToQwj3Db1MvqHebOiQpaDCQ5zSi4pRl6KFUN/eCSoF2XZgH80fXib/CL5ceLr2sQwHCtOzxvp3n57vYOE0SXCpsSnAZ8QffLDzNpkcJ5jj0umdd4CVoMj9/N4VXBp04qvQ5Bq/ekPU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1710779777; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=x3WegiCwiNXkkjs6VfwYfT79v4emqYj9IeVAQcTvOi4=; b=Wz6iZtY3lUCHMp5Wj/LxMDTebHQXG2qkPcc0cq+oltH3NMFQ/bH4Mu9l91ZMEQ3jwsBF2U/ZyOt2BYIKKpIFS1UxPluSPg8j/1pt27P5esAsY395v3YaXjDNa4214Dgvd+QK1ky//SLCoSTq/iI2XErkloi7GrtnpZHyIE07fqw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.xenproject.org designates 192.237.175.120 as permitted sender) smtp.mailfrom=xen-devel-bounces@lists.xenproject.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) by mx.zohomail.com with SMTPS id 1710779777490508.66592286890284; Mon, 18 Mar 2024 09:36:17 -0700 (PDT) Received: from list by lists.xenproject.org with outflank-mailman.694892.1084124 (Exim 4.92) (envelope-from ) id 1rmFxx-0005mS-IC; Mon, 18 Mar 2024 16:36:01 +0000 Received: by outflank-mailman (output) from mailman id 694892.1084124; Mon, 18 Mar 2024 16:36:01 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rmFxx-0005mL-DV; Mon, 18 Mar 2024 16:36:01 +0000 Received: by outflank-mailman (input) for mailman id 694892; Mon, 18 Mar 2024 16:36:00 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1rmFxw-0005JN-97 for xen-devel@lists.xenproject.org; Mon, 18 Mar 2024 16:36:00 +0000 Received: from mail-ed1-x52b.google.com (mail-ed1-x52b.google.com [2a00:1450:4864:20::52b]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 996fdeaf-e545-11ee-a1ee-f123f15fe8a2; Mon, 18 Mar 2024 17:35:58 +0100 (CET) Received: by mail-ed1-x52b.google.com with SMTP id 4fb4d7f45d1cf-568aa3096e9so5493096a12.0 for ; Mon, 18 Mar 2024 09:35:58 -0700 (PDT) Received: from andrewcoop.citrite.net (default-46-102-197-194.interdsl.co.uk. [46.102.197.194]) by smtp.gmail.com with ESMTPSA id j22-20020a170906051600b00a441a7a75b5sm4988894eja.209.2024.03.18.09.35.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 18 Mar 2024 09:35:56 -0700 (PDT) X-Outflank-Mailman: Message body and most headers restored to incoming version X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 996fdeaf-e545-11ee-a1ee-f123f15fe8a2 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=citrix.com; s=google; t=1710779758; x=1711384558; darn=lists.xenproject.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=x3WegiCwiNXkkjs6VfwYfT79v4emqYj9IeVAQcTvOi4=; b=cpOoF0uaI4Pa8rubhx2A76gvCLgQDPevnFFRYNeTNO0wU+etRQUt5RuMJDO9s/350u ly/Hw4+GnD+RNILgwFwK+5rSLtYYxFnFHOeA+lkEm+Vo6BaCyy7poaaiE0D8UFx/Vw1R 85VlsI2y5EcTKRJxCXQjvp/1xwHh5S/d0fHoU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710779758; x=1711384558; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=x3WegiCwiNXkkjs6VfwYfT79v4emqYj9IeVAQcTvOi4=; b=BNgw4RTY+UZY0P6NYbdPCRUwrs46mNNFHWcsMF1MdG9DwqX+ISUyWNRPBRPd0euAXd GEEEAM/V5FKO6AX4rgp+3x4HqHJbDcqhzHCy/tkjIi5pjzQDeaWNL55NgPBF2x6x2gBL gi7W7KktYfhhtxdfIVKmp2YvubWFrpKalXVPv4tsPoYT5r9A+f54FmnU6HSesaNZzNgq lna7sjTl4Qn/gRmkpvCMU8cqg1gJa+1vOFcl5bX/W1qBCSUOF5xmgPc1Mex3TxpKMKlP /z2InVtITQJjMDUnIGacz3lRMfrt+yn0DjzEQ9ZLMjB+igmlLZgmKVWXmJrW7oV8z6wO /tsQ== X-Gm-Message-State: AOJu0Yw+EVEIbMVp3xSOvb9zH4hED+4btHHGFFnOvV3JMzUVj9O/MfU9 HiBcSOHxY9UecOMtiKbZpF+RNSN0vheDnV/nhhJ8Km0Xl/MynQLP8uHK0AKwPLMV+6umAMClWUg J X-Google-Smtp-Source: AGHT+IFwQFT4d2T2VeU4ObTqUFuCgzNbdi9xZPxcaU1yxWCMOe8aG00Scb7/bBqScL2xuuXgVRZpVw== X-Received: by 2002:a17:906:80c4:b0:a46:a8b8:f4cf with SMTP id a4-20020a17090680c400b00a46a8b8f4cfmr79151ejx.35.1710779757835; Mon, 18 Mar 2024 09:35:57 -0700 (PDT) From: Andrew Cooper To: Xen-devel Cc: Andrew Cooper , Jan Beulich , Dario Faggioli , George Dunlap , Jan Beulich , Stefano Stabellini , Julien Grall , Nicola Vetrini , "consulting @ bugseng . com" Subject: [PATCH 2/7] xen/credit2: Clean up trace handling Date: Mon, 18 Mar 2024 16:35:47 +0000 Message-Id: <20240318163552.3808695-3-andrew.cooper3@citrix.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20240318163552.3808695-1-andrew.cooper3@citrix.com> References: <20240318163552.3808695-1-andrew.cooper3@citrix.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @citrix.com) X-ZM-MESSAGEID: 1710779777992100001 Content-Type: text/plain; charset="utf-8" There is no need for bitfields anywhere - use more sensible types. There is also no need to cast 'd' to (unsigned char *) before passing it to a functi= on taking void *. Switch to new trace_time() API. No functional change. Signed-off-by: Andrew Cooper Reviewed-by: Jan Beulich Reviewed-by: Dario Faggioli --- CC: George Dunlap CC: Jan Beulich CC: Stefano Stabellini CC: Julien Grall CC: Dario Faggioli CC: Nicola Vetrini CC: consulting@bugseng.com v2: * Fix whitespace. v3: * Rebase over core API changes. --- xen/common/sched/credit2.c | 301 ++++++++++++++++++------------------- 1 file changed, 146 insertions(+), 155 deletions(-) diff --git a/xen/common/sched/credit2.c b/xen/common/sched/credit2.c index c76330d79d3a..b7df9f2a9111 100644 --- a/xen/common/sched/credit2.c +++ b/xen/common/sched/credit2.c @@ -1085,13 +1085,13 @@ static void update_max_weight(struct csched2_runque= ue_data *rqd, int new_weight, if ( unlikely(tb_init_done) ) { struct { - unsigned rqi:16, max_weight:16; - } d; - d.rqi =3D rqd->id; - d.max_weight =3D rqd->max_weight; - __trace_var(TRC_CSCHED2_RUNQ_MAX_WEIGHT, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t rqi, max_weight; + } d =3D { + .rqi =3D rqd->id, + .max_weight =3D rqd->max_weight, + }; + + trace_time(TRC_CSCHED2_RUNQ_MAX_WEIGHT, sizeof(d), &d); } } =20 @@ -1119,9 +1119,7 @@ _runq_assign(struct csched2_unit *svc, struct csched2= _runqueue_data *rqd) .rqi =3D rqd->id, }; =20 - __trace_var(TRC_CSCHED2_RUNQ_ASSIGN, 1, - sizeof(d), - (unsigned char *)&d); + trace_time(TRC_CSCHED2_RUNQ_ASSIGN, sizeof(d), &d); } =20 } @@ -1354,9 +1352,7 @@ update_runq_load(const struct scheduler *ops, .shift =3D P, }; =20 - __trace_var(TRC_CSCHED2_UPDATE_RUNQ_LOAD, 1, - sizeof(d), - (unsigned char *)&d); + trace_time(TRC_CSCHED2_UPDATE_RUNQ_LOAD, sizeof(d), &d); } } =20 @@ -1406,16 +1402,16 @@ update_svc_load(const struct scheduler *ops, { struct { uint64_t v_avgload; - unsigned unit:16, dom:16; - unsigned shift; - } d; - d.dom =3D svc->unit->domain->domain_id; - d.unit =3D svc->unit->unit_id; - d.v_avgload =3D svc->avgload; - d.shift =3D P; - __trace_var(TRC_CSCHED2_UPDATE_UNIT_LOAD, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint32_t shift; + } d =3D { + .v_avgload =3D svc->avgload, + .unit =3D svc->unit->unit_id, + .dom =3D svc->unit->domain->domain_id, + .shift =3D P, + }; + + trace_time(TRC_CSCHED2_UPDATE_UNIT_LOAD, sizeof(d), &d); } } =20 @@ -1424,7 +1420,7 @@ update_load(const struct scheduler *ops, struct csched2_runqueue_data *rqd, struct csched2_unit *svc, int change, s_time_t now) { - trace_var(TRC_CSCHED2_UPDATE_LOAD, 1, 0, NULL); + TRACE_TIME(TRC_CSCHED2_UPDATE_LOAD); =20 update_runq_load(ops, rqd, change, now); if ( svc ) @@ -1462,15 +1458,15 @@ static void runq_insert(struct csched2_unit *svc) if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - unsigned pos; - } d; - d.dom =3D svc->unit->domain->domain_id; - d.unit =3D svc->unit->unit_id; - d.pos =3D pos; - __trace_var(TRC_CSCHED2_RUNQ_POS, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint32_t pos; + } d =3D { + .unit =3D svc->unit->unit_id, + .dom =3D svc->unit->domain->domain_id, + .pos =3D pos, + }; + + trace_time(TRC_CSCHED2_RUNQ_POS, sizeof(d), &d); } } =20 @@ -1563,16 +1559,16 @@ static s_time_t tickle_score(const struct scheduler= *ops, s_time_t now, if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - int credit, score; - } d; - d.dom =3D cur->unit->domain->domain_id; - d.unit =3D cur->unit->unit_id; - d.credit =3D cur->credit; - d.score =3D score; - __trace_var(TRC_CSCHED2_TICKLE_CHECK, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint32_t credit, score; + } d =3D { + .unit =3D cur->unit->unit_id, + .dom =3D cur->unit->domain->domain_id, + .credit =3D cur->credit, + .score =3D score, + }; + + trace_time(TRC_CSCHED2_TICKLE_CHECK, sizeof(d), &d); } =20 return score; @@ -1610,17 +1606,16 @@ runq_tickle(const struct scheduler *ops, struct csc= hed2_unit *new, s_time_t now) if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - unsigned processor; - int credit; - } d; - d.dom =3D unit->domain->domain_id; - d.unit =3D unit->unit_id; - d.processor =3D cpu; - d.credit =3D new->credit; - __trace_var(TRC_CSCHED2_TICKLE_NEW, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint32_t processor, credit; + } d =3D { + .dom =3D unit->domain->domain_id, + .unit =3D unit->unit_id, + .processor =3D cpu, + .credit =3D new->credit, + }; + + trace_time(TRC_CSCHED2_TICKLE_NEW, sizeof(d), &d); } =20 /* @@ -1759,12 +1754,12 @@ runq_tickle(const struct scheduler *ops, struct csc= hed2_unit *new, s_time_t now) if ( unlikely(tb_init_done) ) { struct { - unsigned cpu:16, pad:16; - } d; - d.cpu =3D ipid; d.pad =3D 0; - __trace_var(TRC_CSCHED2_TICKLE, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t cpu, _pad; + } d =3D { + .cpu =3D ipid, + }; + + trace_time(TRC_CSCHED2_TICKLE, sizeof(d), &d); } =20 tickle_cpu(ipid, rqd); @@ -1840,16 +1835,16 @@ static void reset_credit(int cpu, s_time_t now, str= uct csched2_unit *snext) if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - int credit_start, credit_end; - } d; - d.dom =3D svc->unit->domain->domain_id; - d.unit =3D svc->unit->unit_id; - d.credit_start =3D start_credit; - d.credit_end =3D svc->credit; - __trace_var(TRC_CSCHED2_CREDIT_RESET, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint32_t credit_start, credit_end; + } d =3D { + .unit =3D svc->unit->unit_id, + .dom =3D svc->unit->domain->domain_id, + .credit_start =3D start_credit, + .credit_end =3D svc->credit, + }; + + trace_time(TRC_CSCHED2_CREDIT_RESET, sizeof(d), &d); } } =20 @@ -1895,18 +1890,17 @@ void burn_credits(struct csched2_runqueue_data *rqd, if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - int credit, budget; - int delta; - } d; - d.dom =3D svc->unit->domain->domain_id; - d.unit =3D svc->unit->unit_id; - d.credit =3D svc->credit; - d.budget =3D has_cap(svc) ? svc->budget : INT_MIN; - d.delta =3D delta; - __trace_var(TRC_CSCHED2_CREDIT_BURN, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint32_t credit, budget, delta; + } d =3D { + .unit =3D svc->unit->unit_id, + .dom =3D svc->unit->domain->domain_id, + .credit =3D svc->credit, + .budget =3D has_cap(svc) ? svc->budget : INT_MIN, + .delta =3D delta, + }; + + trace_time(TRC_CSCHED2_CREDIT_BURN, sizeof(d), &d); } } =20 @@ -2551,17 +2545,17 @@ csched2_res_pick(const struct scheduler *ops, const= struct sched_unit *unit) { struct { uint64_t b_avgload; - unsigned unit:16, dom:16; - unsigned rq_id:16, new_cpu:16; - } d; - d.dom =3D unit->domain->domain_id; - d.unit =3D unit->unit_id; - d.rq_id =3D min_rqd ? min_rqd->id : -1; - d.b_avgload =3D min_avgload; - d.new_cpu =3D new_cpu; - __trace_var(TRC_CSCHED2_PICKED_CPU, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint16_t rq_id, new_cpu; + } d =3D { + .b_avgload =3D min_avgload, + .unit =3D unit->unit_id, + .dom =3D unit->domain->domain_id, + .rq_id =3D min_rqd ? min_rqd->id : -1, + .new_cpu =3D new_cpu, + }; + + trace_time(TRC_CSCHED2_PICKED_CPU, sizeof(d), &d); } =20 return get_sched_res(new_cpu); @@ -2622,16 +2616,16 @@ static void migrate(const struct scheduler *ops, if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - unsigned rqi:16, trqi:16; - } d; - d.dom =3D unit->domain->domain_id; - d.unit =3D unit->unit_id; - d.rqi =3D svc->rqd->id; - d.trqi =3D trqd->id; - __trace_var(TRC_CSCHED2_MIGRATE, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint16_t rqi, trqi; + } d =3D { + .unit =3D unit->unit_id, + .dom =3D unit->domain->domain_id, + .rqi =3D svc->rqd->id, + .trqi =3D trqd->id, + }; + + trace_time(TRC_CSCHED2_MIGRATE, sizeof(d), &d); } =20 if ( svc->flags & CSFLAG_scheduled ) @@ -2768,15 +2762,15 @@ static void balance_load(const struct scheduler *op= s, int cpu, s_time_t now) if ( unlikely(tb_init_done) ) { struct { - unsigned lrq_id:16, orq_id:16; - unsigned load_delta; - } d; - d.lrq_id =3D st.lrqd->id; - d.orq_id =3D st.orqd->id; - d.load_delta =3D st.load_delta; - __trace_var(TRC_CSCHED2_LOAD_CHECK, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t lrq_id, orq_id; + uint32_t load_delta; + } d =3D { + .lrq_id =3D st.lrqd->id, + .orq_id =3D st.orqd->id, + .load_delta =3D st.load_delta, + }; + + trace_time(TRC_CSCHED2_LOAD_CHECK, sizeof(d), &d); } =20 /* @@ -2820,9 +2814,7 @@ static void balance_load(const struct scheduler *ops,= int cpu, s_time_t now) .orq_id =3D st.orqd->id, }; =20 - __trace_var(TRC_CSCHED2_LOAD_BALANCE, 1, - sizeof(d), - (unsigned char *)&d); + trace_time(TRC_CSCHED2_LOAD_BALANCE, sizeof(d), &d); } =20 SCHED_STAT_CRANK(acct_load_balance); @@ -3407,15 +3399,15 @@ runq_candidate(struct csched2_runqueue_data *rqd, if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - unsigned runtime; - } d; - d.dom =3D scurr->unit->domain->domain_id; - d.unit =3D scurr->unit->unit_id; - d.runtime =3D now - scurr->unit->state_entry_time; - __trace_var(TRC_CSCHED2_RATELIMIT, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint32_t runtime; + } d =3D { + .unit =3D scurr->unit->unit_id, + .dom =3D scurr->unit->domain->domain_id, + .runtime =3D now - scurr->unit->state_entry_time, + }; + + trace_time(TRC_CSCHED2_RATELIMIT, sizeof(d), &d); } return scurr; } @@ -3468,13 +3460,13 @@ runq_candidate(struct csched2_runqueue_data *rqd, if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - } d; - d.dom =3D svc->unit->domain->domain_id; - d.unit =3D svc->unit->unit_id; - __trace_var(TRC_CSCHED2_RUNQ_CAND_CHECK, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + } d =3D { + .unit =3D svc->unit->unit_id, + .dom =3D svc->unit->domain->domain_id, + }; + + trace_time(TRC_CSCHED2_RUNQ_CAND_CHECK, sizeof(d), &d); } =20 /* @@ -3542,17 +3534,16 @@ runq_candidate(struct csched2_runqueue_data *rqd, if ( unlikely(tb_init_done) ) { struct { - unsigned unit:16, dom:16; - unsigned tickled_cpu; - int credit; - } d; - d.dom =3D snext->unit->domain->domain_id; - d.unit =3D snext->unit->unit_id; - d.credit =3D snext->credit; - d.tickled_cpu =3D snext->tickled_cpu; - __trace_var(TRC_CSCHED2_RUNQ_CANDIDATE, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t unit, dom; + uint32_t tickled_cpu, credit; + } d =3D { + .unit =3D snext->unit->unit_id, + .dom =3D snext->unit->domain->domain_id, + .tickled_cpu =3D snext->tickled_cpu, + .credit =3D snext->credit, + }; + + trace_time(TRC_CSCHED2_RUNQ_CANDIDATE, sizeof(d), &d); } =20 if ( unlikely(snext->tickled_cpu !=3D -1 && snext->tickled_cpu !=3D cp= u) ) @@ -3608,18 +3599,18 @@ static void cf_check csched2_schedule( if ( unlikely(tb_init_done) ) { struct { - unsigned cpu:16, rq_id:16; - unsigned tasklet:8, idle:8, smt_idle:8, tickled:8; - } d; - d.cpu =3D cur_cpu; - d.rq_id =3D c2r(sched_cpu); - d.tasklet =3D tasklet_work_scheduled; - d.idle =3D is_idle_unit(currunit); - d.smt_idle =3D cpumask_test_cpu(sched_cpu, &rqd->smt_idle); - d.tickled =3D tickled; - __trace_var(TRC_CSCHED2_SCHEDULE, 1, - sizeof(d), - (unsigned char *)&d); + uint16_t cpu, rq_id; + uint8_t tasklet, idle, smt_idle, tickled; + } d =3D { + .cpu =3D cur_cpu, + .rq_id =3D c2r(sched_cpu), + .tasklet =3D tasklet_work_scheduled, + .idle =3D is_idle_unit(currunit), + .smt_idle =3D cpumask_test_cpu(sched_cpu, &rqd->smt_idle), + .tickled =3D tickled, + }; + + trace_time(TRC_CSCHED2_SCHEDULE, sizeof(d), &d); } =20 /* Update credits (and budget, if necessary). */ @@ -3654,7 +3645,7 @@ static void cf_check csched2_schedule( if ( tasklet_work_scheduled ) { __clear_bit(__CSFLAG_unit_yield, &scurr->flags); - trace_var(TRC_CSCHED2_SCHED_TASKLET, 1, 0, NULL); + TRACE_TIME(TRC_CSCHED2_SCHED_TASKLET); snext =3D csched2_unit(sched_idle_unit(sched_cpu)); } else --=20 2.30.2