From patchwork Wed Mar 1 14:53:09 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Faggioli X-Patchwork-Id: 9598537 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 2E585604DC for ; Wed, 1 Mar 2017 14:55:35 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 24937223A6 for ; Wed, 1 Mar 2017 14:55:35 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 1943128564; Wed, 1 Mar 2017 14:55:35 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-3.6 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,RCVD_IN_SORBS_SPAM,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 4BC7B28405 for ; Wed, 1 Mar 2017 14:55:34 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cj5cw-00065K-Pq; Wed, 01 Mar 2017 14:53:14 +0000 Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cj5cv-00064i-FH for xen-devel@lists.xenproject.org; Wed, 01 Mar 2017 14:53:13 +0000 Received: from [85.158.143.35] by server-2.bemta-6.messagelabs.com id 30/50-19731-850E6B85; Wed, 01 Mar 2017 14:53:12 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFupgleJIrShJLcpLzFFi42K5GNpwWDf8wbY Ig54dxhbft0xmcmD0OPzhCksAYxRrZl5SfkUCa8b/F2tZCnpTKmb/U21gnO3bxcjFISQwg1Fi 786VbCAOi8AaVomFPb0sII6EwCVWiYebVwFlOIGcGIm3i1YxQ9iVEk/vLgOLCwmoSNzcvooJY tR3Ron5C5qYQBLCAnoSR47+YIewIyTenT/OAmKzCRhIvNmxlxXEFhFQkri3ajJQPQcHs0C4xO pObpAwi4CqxL3pbYwgNq+At8Tfp/1grZwCPhKnVy5mAykXAor/WecKEhYVkJNYebmFFaJcUOL kzCcsEBM1Jdbv0gcJMwvIS2x/O4d5AqPILCRVsxCqZiGpWsDIvIpRozi1qCy1SNfQVC+pKDM9 oyQ3MTNH19DATC83tbg4MT01JzGpWC85P3cTIzD0GYBgB+O3ZQGHGCU5mJREeXev2hYhxJeUn 1KZkVicEV9UmpNafIhRg4NDYMLZudOZpFjy8vNSlSR4o+8D1QkWpaanVqRl5gCjE6ZUgoNHSY R3PUiat7ggMbc4Mx0idYrRkuPBqV1vmDg+9R8Gkr96jr1hEgKbJyXOGwrSIADSkFGaBzcOlkA uMcpKCfMyAh0rxFOQWpSbWYIq/4pRnINRSZi3GmQKT2ZeCdzWV0AHMQEd9EJlK8hBJYkIKakG Rh537QcHiycYJq88umHqdt6l154WbzFeVKyeZ/ZlxYJkx6Wu3773XJx6ySk658yps0bRX7543 my6MXPmpaTpp4XNblvF7XbTfuyfcLPj+TIX1sWXt/zOUWlLnvplrkXHjeiW55/2yt3ctObftZ xDka2bQlqd/AS7bF59ro3ylPk0bbbs+UT3Q51KLMUZiYZazEXFiQCXCr8YGwMAAA== X-Env-Sender: raistlin.df@gmail.com X-Msg-Ref: server-5.tower-21.messagelabs.com!1488379991!52135566!1 X-Originating-IP: [209.85.128.195] X-SpamReason: No, hits=0.0 required=7.0 tests= X-StarScan-Received: X-StarScan-Version: 9.4.3; banners=-,-,- X-VirusChecked: Checked Received: (qmail 43632 invoked from network); 1 Mar 2017 14:53:11 -0000 Received: from mail-wr0-f195.google.com (HELO mail-wr0-f195.google.com) (209.85.128.195) by server-5.tower-21.messagelabs.com with AES128-GCM-SHA256 encrypted SMTP; 1 Mar 2017 14:53:11 -0000 Received: by mail-wr0-f195.google.com with SMTP id u48so5863369wrc.1 for ; Wed, 01 Mar 2017 06:53:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:subject:from:to:cc:date:message-id:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=G4CUdeUYV/M9iS29EYfEeRWHdF7MYJ45Ynol30OWam4=; b=SP/EKWRgLhNFdGnRKtakCvAISLJwcto7avh1aK5gZGdhdd15hUi0PjzL3qJtGL4h6u SYm1g3zbaOGWH9Xvfb7tY39ftempEjdwM+0lNnvfawsJLL2BmoXwsIC4rrYlaHDbWX6+ XSYFR67WzattzbsL9mUcMRVtK36j8TC5ymrmWRQ6vw91F/eDikNrVEElEUdoHFFU/Gc/ 9XXbx7SQx0v96WC6kXBSMqzPZ6sNsK4jKUnwOA2z3nl7DBaWxpszt5tPkTkyVzCCUZ1C j+9ugFjQNiYNxPRbgE2HCpGMvtWJNW189SJk2oQeq7PkLsD24ou/7xUriRm3d10gMn+v q2ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:subject:from:to:cc:date:message-id :in-reply-to:references:user-agent:mime-version :content-transfer-encoding; bh=G4CUdeUYV/M9iS29EYfEeRWHdF7MYJ45Ynol30OWam4=; b=q/y2Mo6FbQsDR15BXD95AfytnjIGwpCARs7f1VgJcWMWG8vgJtQ+lo00ZXIJLWm0XJ bhzElPmXHiGIsum38AbrYey2qc/GbDt+zZnnUToK+rUak9J2adbfBcj7ff++T/3ZI34M vKqf+Tz2qVfK5PfYUI3ikIIAwoXx4BQas0/nhrjZUBfezkGIJCNPwIUJlIN8fngqNHhX wPrWJ7T8VZRf/Lcz3eO1HjtezCkZpD1AGEPXY6aS6Hg/WgPitnmJWUs0K8+p0K7oJrpR ZVntW3QmxB7ugvhgwyb13P0/BBbYuBPB5GwnqD9kxRUWS6jQKZlgqsuLbQ0N7trJqLcB ib+g== X-Gm-Message-State: AMke39nQRloEEIYuy6Ddlr8nQJGPoDT+C2t6Yssv7FwEvUvCAm/dxXOIOAhAYRS+B9HmuA== X-Received: by 10.223.129.183 with SMTP id 52mr8264774wra.88.1488379991289; Wed, 01 Mar 2017 06:53:11 -0800 (PST) Received: from Solace.fritz.box ([80.66.223.93]) by smtp.gmail.com with ESMTPSA id 63sm5595511wmp.9.2017.03.01.06.53.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 01 Mar 2017 06:53:10 -0800 (PST) From: Dario Faggioli To: xen-devel@lists.xenproject.org Date: Wed, 01 Mar 2017 15:53:09 +0100 Message-ID: <148837998918.11900.5678578808524838402.stgit@Solace.fritz.box> In-Reply-To: <148837861276.11900.8292677471375175885.stgit@Solace.fritz.box> References: <148837861276.11900.8292677471375175885.stgit@Solace.fritz.box> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Cc: Anshul Makkar , George Dunlap Subject: [Xen-devel] [PATCH v4 4/7] xen: credit2: tidy up functions names by removing leading '__'. X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP There is no reason for having pretty much all of the functions whose names begin with double underscores ('__') to actually look like that. In fact, that is misleading and makes the code hard to read and understand. So, remove the '__'-s. The only two that we keep are __runq_assign() and __runq_deassign() (althought they're converted to single underscore). In fact, in those cases, it is indeed useful to have those sort of a "raw" variants. In case of __runq_insert(), which is only called once, by runq_insert(), merge the two functions. No functional change intended. Signed-off-by: Dario Faggioli Acked-by: George Dunlap --- Cc: Anshul Makkar --- Changes from v2: * made 'runq_elem()' inline as well, as suggested during review. --- xen/common/sched_credit2.c | 114 +++++++++++++++++++------------------------- 1 file changed, 49 insertions(+), 65 deletions(-) diff --git a/xen/common/sched_credit2.c b/xen/common/sched_credit2.c index 1be4385..1f57239 100644 --- a/xen/common/sched_credit2.c +++ b/xen/common/sched_credit2.c @@ -220,7 +220,7 @@ integer_param("sched_credit2_migrate_resist", opt_migrate_resist); * shift all time samples to the right. * * The details of the formulas used for load tracking are explained close to - * __update_runq_load(). Let's just say here that, with full nanosecond time + * update_runq_load(). Let's just say here that, with full nanosecond time * granularity, a 30 bits wide 'decaying window' is ~1 second long. * * We want to consider the following equations: @@ -232,7 +232,7 @@ integer_param("sched_credit2_migrate_resist", opt_migrate_resist); * Q-format fixed point arithmetic and load is the instantaneous load of a * runqueue, which basically is the number of runnable vcpus there are on the * runqueue (for the meaning of the other terms, look at the doc comment to - * __update_runq_load()). + * update_runq_load()). * * So, again, with full nanosecond granularity, and 1 second window, we have: * @@ -593,14 +593,12 @@ static s_time_t c2t(struct csched2_runqueue_data *rqd, s_time_t credit, struct c * Runqueue related code */ -static /*inline*/ int -__vcpu_on_runq(struct csched2_vcpu *svc) +static inline int vcpu_on_runq(struct csched2_vcpu *svc) { return !list_empty(&svc->runq_elem); } -static /*inline*/ struct csched2_vcpu * -__runq_elem(struct list_head *elem) +static inline struct csched2_vcpu * runq_elem(struct list_head *elem) { return list_entry(elem, struct csched2_vcpu, runq_elem); } @@ -712,8 +710,8 @@ __runq_elem(struct list_head *elem) * Which, in both cases, is what we expect. */ static void -__update_runq_load(const struct scheduler *ops, - struct csched2_runqueue_data *rqd, int change, s_time_t now) +update_runq_load(const struct scheduler *ops, + struct csched2_runqueue_data *rqd, int change, s_time_t now) { struct csched2_private *prv = csched2_priv(ops); s_time_t delta, load = rqd->load; @@ -799,8 +797,8 @@ __update_runq_load(const struct scheduler *ops, } static void -__update_svc_load(const struct scheduler *ops, - struct csched2_vcpu *svc, int change, s_time_t now) +update_svc_load(const struct scheduler *ops, + struct csched2_vcpu *svc, int change, s_time_t now) { struct csched2_private *prv = csched2_priv(ops); s_time_t delta, vcpu_load; @@ -864,17 +862,24 @@ update_load(const struct scheduler *ops, { trace_var(TRC_CSCHED2_UPDATE_LOAD, 1, 0, NULL); - __update_runq_load(ops, rqd, change, now); + update_runq_load(ops, rqd, change, now); if ( svc ) - __update_svc_load(ops, svc, change, now); + update_svc_load(ops, svc, change, now); } -static int -__runq_insert(struct list_head *runq, struct csched2_vcpu *svc) +static void +runq_insert(const struct scheduler *ops, struct csched2_vcpu *svc) { struct list_head *iter; + unsigned int cpu = svc->vcpu->processor; + struct list_head * runq = &c2rqd(ops, cpu)->runq; int pos = 0; + ASSERT(spin_is_locked(per_cpu(schedule_data, cpu).schedule_lock)); + + ASSERT(!vcpu_on_runq(svc)); + ASSERT(c2r(ops, cpu) == c2r(ops, svc->vcpu->processor)); + ASSERT(&svc->rqd->runq == runq); ASSERT(!is_idle_vcpu(svc->vcpu)); ASSERT(!svc->vcpu->is_running); @@ -882,33 +887,15 @@ __runq_insert(struct list_head *runq, struct csched2_vcpu *svc) list_for_each( iter, runq ) { - struct csched2_vcpu * iter_svc = __runq_elem(iter); + struct csched2_vcpu * iter_svc = runq_elem(iter); if ( svc->credit > iter_svc->credit ) break; pos++; } - list_add_tail(&svc->runq_elem, iter); - return pos; -} - -static void -runq_insert(const struct scheduler *ops, struct csched2_vcpu *svc) -{ - unsigned int cpu = svc->vcpu->processor; - struct list_head * runq = &c2rqd(ops, cpu)->runq; - int pos = 0; - - ASSERT(spin_is_locked(per_cpu(schedule_data, cpu).schedule_lock)); - - ASSERT(!__vcpu_on_runq(svc)); - ASSERT(c2r(ops, cpu) == c2r(ops, svc->vcpu->processor)); - - pos = __runq_insert(runq, svc); - if ( unlikely(tb_init_done) ) { struct { @@ -922,14 +909,11 @@ runq_insert(const struct scheduler *ops, struct csched2_vcpu *svc) sizeof(d), (unsigned char *)&d); } - - return; } -static inline void -__runq_remove(struct csched2_vcpu *svc) +static inline void runq_remove(struct csched2_vcpu *svc) { - ASSERT(__vcpu_on_runq(svc)); + ASSERT(vcpu_on_runq(svc)); list_del_init(&svc->runq_elem); } @@ -1296,8 +1280,8 @@ static void update_max_weight(struct csched2_runqueue_data *rqd, int new_weight, } #ifndef NDEBUG -static /*inline*/ void -__csched2_vcpu_check(struct vcpu *vc) +static inline void +csched2_vcpu_check(struct vcpu *vc) { struct csched2_vcpu * const svc = csched2_vcpu(vc); struct csched2_dom * const sdom = svc->sdom; @@ -1315,7 +1299,7 @@ __csched2_vcpu_check(struct vcpu *vc) } SCHED_STAT_CRANK(vcpu_check); } -#define CSCHED2_VCPU_CHECK(_vc) (__csched2_vcpu_check(_vc)) +#define CSCHED2_VCPU_CHECK(_vc) (csched2_vcpu_check(_vc)) #else #define CSCHED2_VCPU_CHECK(_vc) #endif @@ -1361,7 +1345,7 @@ csched2_alloc_vdata(const struct scheduler *ops, struct vcpu *vc, void *dd) /* Add and remove from runqueue assignment (not active run queue) */ static void -__runq_assign(struct csched2_vcpu *svc, struct csched2_runqueue_data *rqd) +_runq_assign(struct csched2_vcpu *svc, struct csched2_runqueue_data *rqd) { svc->rqd = rqd; @@ -1395,15 +1379,15 @@ runq_assign(const struct scheduler *ops, struct vcpu *vc) ASSERT(svc->rqd == NULL); - __runq_assign(svc, c2rqd(ops, vc->processor)); + _runq_assign(svc, c2rqd(ops, vc->processor)); } static void -__runq_deassign(struct csched2_vcpu *svc) +_runq_deassign(struct csched2_vcpu *svc) { struct csched2_runqueue_data *rqd = svc->rqd; - ASSERT(!__vcpu_on_runq(svc)); + ASSERT(!vcpu_on_runq(svc)); ASSERT(!(svc->flags & CSFLAG_scheduled)); list_del_init(&svc->rqd_elem); @@ -1422,7 +1406,7 @@ runq_deassign(const struct scheduler *ops, struct vcpu *vc) ASSERT(svc->rqd == c2rqd(ops, vc->processor)); - __runq_deassign(svc); + _runq_deassign(svc); } static void @@ -1437,11 +1421,11 @@ csched2_vcpu_sleep(const struct scheduler *ops, struct vcpu *vc) { tickle_cpu(vc->processor, svc->rqd); } - else if ( __vcpu_on_runq(svc) ) + else if ( vcpu_on_runq(svc) ) { ASSERT(svc->rqd == c2rqd(ops, vc->processor)); update_load(ops, svc->rqd, svc, -1, NOW()); - __runq_remove(svc); + runq_remove(svc); } else if ( svc->flags & CSFLAG_delayed_runq_add ) __clear_bit(__CSFLAG_delayed_runq_add, &svc->flags); @@ -1464,7 +1448,7 @@ csched2_vcpu_wake(const struct scheduler *ops, struct vcpu *vc) goto out; } - if ( unlikely(__vcpu_on_runq(svc)) ) + if ( unlikely(vcpu_on_runq(svc)) ) { SCHED_STAT_CRANK(vcpu_wake_onrunq); goto out; @@ -1526,7 +1510,7 @@ csched2_context_saved(const struct scheduler *ops, struct vcpu *vc) /* If someone wants it on the runqueue, put it there. */ /* * NB: We can get rid of CSFLAG_scheduled by checking for - * vc->is_running and __vcpu_on_runq(svc) here. However, + * vc->is_running and vcpu_on_runq(svc) here. However, * since we're accessing the flags cacheline anyway, * it seems a bit pointless; especially as we have plenty of * bits free. @@ -1534,7 +1518,7 @@ csched2_context_saved(const struct scheduler *ops, struct vcpu *vc) if ( __test_and_clear_bit(__CSFLAG_delayed_runq_add, &svc->flags) && likely(vcpu_runnable(vc)) ) { - ASSERT(!__vcpu_on_runq(svc)); + ASSERT(!vcpu_on_runq(svc)); runq_insert(ops, svc); runq_tickle(ops, svc, now); @@ -1766,13 +1750,13 @@ static void migrate(const struct scheduler *ops, { int on_runq = 0; /* It's not running; just move it */ - if ( __vcpu_on_runq(svc) ) + if ( vcpu_on_runq(svc) ) { - __runq_remove(svc); + runq_remove(svc); update_load(ops, svc->rqd, NULL, -1, now); on_runq = 1; } - __runq_deassign(svc); + _runq_deassign(svc); cpumask_and(cpumask_scratch_cpu(cpu), svc->vcpu->cpu_hard_affinity, cpupool_domain_cpumask(svc->vcpu->domain)); @@ -1781,7 +1765,7 @@ static void migrate(const struct scheduler *ops, svc->vcpu->processor = cpumask_any(cpumask_scratch_cpu(cpu)); ASSERT(svc->vcpu->processor < nr_cpu_ids); - __runq_assign(svc, trqd); + _runq_assign(svc, trqd); if ( on_runq ) { update_load(ops, svc->rqd, NULL, 1, now); @@ -1831,7 +1815,7 @@ static void balance_load(const struct scheduler *ops, int cpu, s_time_t now) ASSERT(spin_is_locked(per_cpu(schedule_data, cpu).schedule_lock)); st.lrqd = c2rqd(ops, cpu); - __update_runq_load(ops, st.lrqd, 0, now); + update_runq_load(ops, st.lrqd, 0, now); retry: if ( !read_trylock(&prv->lock) ) @@ -1849,7 +1833,7 @@ retry: || !spin_trylock(&st.orqd->lock) ) continue; - __update_runq_load(ops, st.orqd, 0, now); + update_runq_load(ops, st.orqd, 0, now); delta = st.lrqd->b_avgload - st.orqd->b_avgload; if ( delta < 0 ) @@ -1950,7 +1934,7 @@ retry: { struct csched2_vcpu * push_svc = list_entry(push_iter, struct csched2_vcpu, rqd_elem); - __update_svc_load(ops, push_svc, 0, now); + update_svc_load(ops, push_svc, 0, now); if ( !vcpu_is_migrateable(push_svc, st.orqd) ) continue; @@ -1960,7 +1944,7 @@ retry: struct csched2_vcpu * pull_svc = list_entry(pull_iter, struct csched2_vcpu, rqd_elem); if ( !inner_load_updated ) - __update_svc_load(ops, pull_svc, 0, now); + update_svc_load(ops, pull_svc, 0, now); if ( !vcpu_is_migrateable(pull_svc, st.lrqd) ) continue; @@ -2024,12 +2008,12 @@ csched2_vcpu_migrate( if ( unlikely(!cpumask_test_cpu(new_cpu, cpupool_domain_cpumask(d))) ) { ASSERT(system_state == SYS_STATE_suspend); - if ( __vcpu_on_runq(svc) ) + if ( vcpu_on_runq(svc) ) { - __runq_remove(svc); + runq_remove(svc); update_load(ops, svc->rqd, NULL, -1, now); } - __runq_deassign(svc); + _runq_deassign(svc); vc->processor = new_cpu; return; } @@ -2321,7 +2305,7 @@ csched2_runtime(const struct scheduler *ops, int cpu, * run until your credit ~= his */ if ( ! list_empty(runq) ) { - struct csched2_vcpu *swait = __runq_elem(runq->next); + struct csched2_vcpu *swait = runq_elem(runq->next); if ( ! is_idle_vcpu(swait->vcpu) && swait->credit > 0 ) @@ -2585,7 +2569,7 @@ csched2_schedule( ASSERT(snext->rqd == rqd); ASSERT(!snext->vcpu->is_running); - __runq_remove(snext); + runq_remove(snext); __set_bit(__CSFLAG_scheduled, &snext->flags); } @@ -2795,7 +2779,7 @@ csched2_dump(const struct scheduler *ops) printk("RUNQ:\n"); list_for_each( iter, runq ) { - struct csched2_vcpu *svc = __runq_elem(iter); + struct csched2_vcpu *svc = runq_elem(iter); if ( svc ) {