Re: [XEN PATCH v2] xen/sched: mechanical renaming to address MISRA C:2012 Rule 5.3

2023-07-25 Thread Nicola Vetrini




On 25/07/23 16:52, Jan Beulich wrote:

On 25.07.2023 11:08, Nicola Vetrini wrote:

@@ -99,14 +99,15 @@ static void sched_set_affinity(
  struct sched_unit *unit, const cpumask_t *hard, const cpumask_t *soft);
  
  static struct sched_resource *cf_check

-sched_idle_res_pick(const struct scheduler *ops, const struct sched_unit *unit)
+sched_idle_res_pick(
+const struct scheduler *ops, const struct sched_unit *unit)
  {
  return unit->res;
  }
  
  static void *cf_check

-sched_idle_alloc_udata(const struct scheduler *ops, struct sched_unit *unit,
-   void *dd)
+sched_idle_alloc_udata(
+const struct scheduler *ops, struct sched_unit *unit, void *dd)
  {
  /* Any non-NULL pointer is fine here. */
  return ZERO_BLOCK_PTR;


These look like stray changes, presumably resulting from you not fully
undoing earlier changes.



You're right, they were the byproduct of an earlier edit to this patch.


--- a/xen/common/sched/credit2.c
+++ b/xen/common/sched/credit2.c
@@ -3809,7 +3809,8 @@ csched2_dump(const struct scheduler *ops)
  struct list_head *iter_sdom;
  struct csched2_private *prv = csched2_priv(ops);
  unsigned long flags;
-unsigned int j, loop;
+unsigned int loop;
+int j;


This looks like a stray change too, just that it's unclear where it is
coming from.



I thought I added a note to the commit, but I probably did some mistake.
That's why I changed it:

Note: local variable 'j' in xen/common/sched/credit2.c:3888' should
probably be unsigned as well, but I saw while editing the patch
that it's used as a parameter to 'dump_pcpu', which takes an int.
Changing the types of parameters used in these calls is
probably a good target for another patch, as it's not relevant
to Rule 5.3


@@ -3884,7 +3885,7 @@ csched2_dump(const struct scheduler *ops)
  list_for_each_entry ( rqd, &prv->rql, rql )
  {
  struct list_head *iter, *runq = &rqd->runq;
-int loop = 0;
+loop = 0;
  
  /* We need the lock to scan the runqueue. */

  spin_lock(&rqd->lock);


With the switch from declaration to statement, a blank line wants
inserting (to separate the remaining declaration from the
statements).



Ok

--
Nicola Vetrini, BSc
Software Engineer, BUGSENG srl (https://bugseng.com)



Re: [XEN PATCH v2] xen/sched: mechanical renaming to address MISRA C:2012 Rule 5.3

2023-07-25 Thread Jan Beulich
On 25.07.2023 11:08, Nicola Vetrini wrote:
> @@ -99,14 +99,15 @@ static void sched_set_affinity(
>  struct sched_unit *unit, const cpumask_t *hard, const cpumask_t *soft);
>  
>  static struct sched_resource *cf_check
> -sched_idle_res_pick(const struct scheduler *ops, const struct sched_unit 
> *unit)
> +sched_idle_res_pick(
> +const struct scheduler *ops, const struct sched_unit *unit)
>  {
>  return unit->res;
>  }
>  
>  static void *cf_check
> -sched_idle_alloc_udata(const struct scheduler *ops, struct sched_unit *unit,
> -   void *dd)
> +sched_idle_alloc_udata(
> +const struct scheduler *ops, struct sched_unit *unit, void *dd)
>  {
>  /* Any non-NULL pointer is fine here. */
>  return ZERO_BLOCK_PTR;

These look like stray changes, presumably resulting from you not fully
undoing earlier changes.

> --- a/xen/common/sched/credit2.c
> +++ b/xen/common/sched/credit2.c
> @@ -3809,7 +3809,8 @@ csched2_dump(const struct scheduler *ops)
>  struct list_head *iter_sdom;
>  struct csched2_private *prv = csched2_priv(ops);
>  unsigned long flags;
> -unsigned int j, loop;
> +unsigned int loop;
> +int j;

This looks like a stray change too, just that it's unclear where it is
coming from.

> @@ -3884,7 +3885,7 @@ csched2_dump(const struct scheduler *ops)
>  list_for_each_entry ( rqd, &prv->rql, rql )
>  {
>  struct list_head *iter, *runq = &rqd->runq;
> -int loop = 0;
> +loop = 0;
>  
>  /* We need the lock to scan the runqueue. */
>  spin_lock(&rqd->lock);

With the switch from declaration to statement, a blank line wants
inserting (to separate the remaining declaration from the
statements).

Jan



[XEN PATCH v2] xen/sched: mechanical renaming to address MISRA C:2012 Rule 5.3

2023-07-25 Thread Nicola Vetrini
Rule 5.3 has the following headline:
"An identifier declared in an inner scope shall not hide an
identifier declared in an outer scope"

The renaming s/sched_id/scheduler_id/ of the function defined in
'xen/common/sched/core.c' prevents any hiding of that function
by the instances of homonymous function parameters that
are defined in inner scopes.

Similarly, the renames
- s/ops/operations/ for the static variable in 'xen/common/sched/core.c'
- s/do_softirq/needs_softirq/
are introduced for variables, to avoid any conflict with homonymous
parameters or function identifiers.

Moreover, the variable 'loop' defined at 'xen/common/sched/credit2.c:3887'
has been dropped, in favour of the homonymous variable declared in the
outer scope. This in turn requires a modification of the printk call that
involves it.

Signed-off-by: Nicola Vetrini 
---
Changes in v2:
- s/softirq/needs_softirq/
- Dropped local variable 'it'
- Renamed the 'ops' static variable instead of function parameters
in the idle scheduler for coherence.
---
 xen/common/sched/core.c| 35 ++-
 xen/common/sched/credit2.c |  9 +
 xen/common/sysctl.c|  2 +-
 xen/include/xen/sched.h|  2 +-
 4 files changed, 25 insertions(+), 23 deletions(-)

diff --git a/xen/common/sched/core.c b/xen/common/sched/core.c
index 022f548652..ed977ddfd5 100644
--- a/xen/common/sched/core.c
+++ b/xen/common/sched/core.c
@@ -91,7 +91,7 @@ extern const struct scheduler *__start_schedulers_array[], 
*__end_schedulers_arr
 #define NUM_SCHEDULERS (__end_schedulers_array - __start_schedulers_array)
 #define schedulers __start_schedulers_array
 
-static struct scheduler __read_mostly ops;
+static struct scheduler __read_mostly operations;
 
 static bool scheduler_active;
 
@@ -99,14 +99,15 @@ static void sched_set_affinity(
 struct sched_unit *unit, const cpumask_t *hard, const cpumask_t *soft);
 
 static struct sched_resource *cf_check
-sched_idle_res_pick(const struct scheduler *ops, const struct sched_unit *unit)
+sched_idle_res_pick(
+const struct scheduler *ops, const struct sched_unit *unit)
 {
 return unit->res;
 }
 
 static void *cf_check
-sched_idle_alloc_udata(const struct scheduler *ops, struct sched_unit *unit,
-   void *dd)
+sched_idle_alloc_udata(
+const struct scheduler *ops, struct sched_unit *unit, void *dd)
 {
 /* Any non-NULL pointer is fine here. */
 return ZERO_BLOCK_PTR;
@@ -171,7 +172,7 @@ static inline struct scheduler *dom_scheduler(const struct 
domain *d)
  * is the default scheduler that has been, choosen at boot.
  */
 ASSERT(is_idle_domain(d));
-return &ops;
+return &operations;
 }
 
 static inline struct scheduler *unit_scheduler(const struct sched_unit *unit)
@@ -2040,10 +2041,10 @@ long do_set_timer_op(s_time_t timeout)
 return 0;
 }
 
-/* sched_id - fetch ID of current scheduler */
-int sched_id(void)
+/* scheduler_id - fetch ID of current scheduler */
+int scheduler_id(void)
 {
-return ops.sched_id;
+return operations.sched_id;
 }
 
 /* Adjust scheduling parameter for a given domain. */
@@ -2579,7 +2580,7 @@ static void cf_check sched_slave(void)
 struct sched_unit*prev = vprev->sched_unit, *next;
 s_time_t  now;
 spinlock_t   *lock;
-bool  do_softirq = false;
+bool  needs_softirq = false;
 unsigned int  cpu = smp_processor_id();
 
 ASSERT_NOT_IN_ATOMIC();
@@ -2604,7 +2605,7 @@ static void cf_check sched_slave(void)
 return;
 }
 
-do_softirq = true;
+needs_softirq = true;
 }
 
 if ( !prev->rendezvous_in_cnt )
@@ -2614,7 +2615,7 @@ static void cf_check sched_slave(void)
 rcu_read_unlock(&sched_res_rculock);
 
 /* Check for failed forced context switch. */
-if ( do_softirq )
+if ( needs_softirq )
 raise_softirq(SCHEDULE_SOFTIRQ);
 
 return;
@@ -3016,14 +3017,14 @@ void __init scheduler_init(void)
 BUG_ON(!scheduler);
 printk("Using '%s' (%s)\n", scheduler->name, scheduler->opt_name);
 }
-ops = *scheduler;
+operations = *scheduler;
 
 if ( cpu_schedule_up(0) )
 BUG();
 register_cpu_notifier(&cpu_schedule_nfb);
 
-printk("Using scheduler: %s (%s)\n", ops.name, ops.opt_name);
-if ( sched_init(&ops) )
+printk("Using scheduler: %s (%s)\n", operations.name, operations.opt_name);
+if ( sched_init(&operations) )
 panic("scheduler returned error on init\n");
 
 if ( sched_ratelimit_us &&
@@ -3363,7 +3364,7 @@ int schedule_cpu_rm(unsigned int cpu, struct cpu_rm_data 
*data)
 
 struct scheduler *scheduler_get_default(void)
 {
-return &ops;
+return &operations;
 }
 
 struct scheduler *scheduler_alloc(unsigned int sched_id)
@@ -3392,7 +3393,7 @@ struct scheduler *scheduler_alloc(unsigned int sched_id)
 
 void scheduler_free(struct scheduler *sched)
 {
-BUG_ON(sched ==