|
@@ -65,6 +65,7 @@ static struct rcu_ctrlblk rcu_ctrlblk = {
|
|
.lock = __SPIN_LOCK_UNLOCKED(&rcu_ctrlblk.lock),
|
|
.lock = __SPIN_LOCK_UNLOCKED(&rcu_ctrlblk.lock),
|
|
.cpumask = CPU_BITS_NONE,
|
|
.cpumask = CPU_BITS_NONE,
|
|
};
|
|
};
|
|
|
|
+
|
|
static struct rcu_ctrlblk rcu_bh_ctrlblk = {
|
|
static struct rcu_ctrlblk rcu_bh_ctrlblk = {
|
|
.cur = -300,
|
|
.cur = -300,
|
|
.completed = -300,
|
|
.completed = -300,
|
|
@@ -73,8 +74,26 @@ static struct rcu_ctrlblk rcu_bh_ctrlblk = {
|
|
.cpumask = CPU_BITS_NONE,
|
|
.cpumask = CPU_BITS_NONE,
|
|
};
|
|
};
|
|
|
|
|
|
-DEFINE_PER_CPU(struct rcu_data, rcu_data) = { 0L };
|
|
|
|
-DEFINE_PER_CPU(struct rcu_data, rcu_bh_data) = { 0L };
|
|
|
|
|
|
+static DEFINE_PER_CPU(struct rcu_data, rcu_data);
|
|
|
|
+static DEFINE_PER_CPU(struct rcu_data, rcu_bh_data);
|
|
|
|
+
|
|
|
|
+/*
|
|
|
|
+ * Increment the quiescent state counter.
|
|
|
|
+ * The counter is a bit degenerated: We do not need to know
|
|
|
|
+ * how many quiescent states passed, just if there was at least
|
|
|
|
+ * one since the start of the grace period. Thus just a flag.
|
|
|
|
+ */
|
|
|
|
+void rcu_qsctr_inc(int cpu)
|
|
|
|
+{
|
|
|
|
+ struct rcu_data *rdp = &per_cpu(rcu_data, cpu);
|
|
|
|
+ rdp->passed_quiesc = 1;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+void rcu_bh_qsctr_inc(int cpu)
|
|
|
|
+{
|
|
|
|
+ struct rcu_data *rdp = &per_cpu(rcu_bh_data, cpu);
|
|
|
|
+ rdp->passed_quiesc = 1;
|
|
|
|
+}
|
|
|
|
|
|
static int blimit = 10;
|
|
static int blimit = 10;
|
|
static int qhimark = 10000;
|
|
static int qhimark = 10000;
|