Skip to content

Commit

Permalink
refscale: Add test for sched_clock()
Browse files Browse the repository at this point in the history
This commit adds a "sched-clock" test for the sched_clock() function.

Signed-off-by: Paul E. McKenney <paulmck@kernel.org>
Signed-off-by: Frederic Weisbecker <frederic@kernel.org>
Signed-off-by: Uladzislau Rezki (Sony) <urezki@gmail.com>
  • Loading branch information
Paul E. McKenney authored and Uladzislau Rezki (Sony) committed Dec 14, 2024
1 parent fac04ef commit 1806b1f
Showing 1 changed file with 37 additions and 3 deletions.
40 changes: 37 additions & 3 deletions kernel/rcu/refscale.c
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
#include <linux/slab.h>
#include <linux/torture.h>
#include <linux/types.h>
#include <linux/sched/clock.h>

#include "rcu.h"

Expand Down Expand Up @@ -531,6 +532,39 @@ static const struct ref_scale_ops acqrel_ops = {

static volatile u64 stopopts;

static void ref_sched_clock_section(const int nloops)
{
u64 x = 0;
int i;

preempt_disable();
for (i = nloops; i >= 0; i--)
x += sched_clock();
preempt_enable();
stopopts = x;
}

static void ref_sched_clock_delay_section(const int nloops, const int udl, const int ndl)
{
u64 x = 0;
int i;

preempt_disable();
for (i = nloops; i >= 0; i--) {
x += sched_clock();
un_delay(udl, ndl);
}
preempt_enable();
stopopts = x;
}

static const struct ref_scale_ops sched_clock_ops = {
.readsection = ref_sched_clock_section,
.delaysection = ref_sched_clock_delay_section,
.name = "sched-clock"
};


static void ref_clock_section(const int nloops)
{
u64 x = 0;
Expand Down Expand Up @@ -1130,9 +1164,9 @@ ref_scale_init(void)
int firsterr = 0;
static const struct ref_scale_ops *scale_ops[] = {
&rcu_ops, &srcu_ops, &srcu_lite_ops, RCU_TRACE_OPS RCU_TASKS_OPS
&refcnt_ops, &rwlock_ops, &rwsem_ops, &lock_ops, &lock_irq_ops, &acqrel_ops,
&clock_ops, &jiffies_ops, &typesafe_ref_ops, &typesafe_lock_ops,
&typesafe_seqlock_ops,
&refcnt_ops, &rwlock_ops, &rwsem_ops, &lock_ops, &lock_irq_ops,
&acqrel_ops, &sched_clock_ops, &clock_ops, &jiffies_ops,
&typesafe_ref_ops, &typesafe_lock_ops, &typesafe_seqlock_ops,
};

if (!torture_init_begin(scale_type, verbose))
Expand Down

0 comments on commit 1806b1f

Please sign in to comment.