|
@@ -717,6 +717,21 @@ int rcu_is_cpu_idle(void)
|
|
}
|
|
}
|
|
EXPORT_SYMBOL(rcu_is_cpu_idle);
|
|
EXPORT_SYMBOL(rcu_is_cpu_idle);
|
|
|
|
|
|
|
|
+#ifdef CONFIG_RCU_USER_QS
|
|
|
|
+void rcu_user_hooks_switch(struct task_struct *prev,
|
|
|
|
+ struct task_struct *next)
|
|
|
|
+{
|
|
|
|
+ struct rcu_dynticks *rdtp;
|
|
|
|
+
|
|
|
|
+ /* Interrupts are disabled in context switch */
|
|
|
|
+ rdtp = &__get_cpu_var(rcu_dynticks);
|
|
|
|
+ if (!rdtp->ignore_user_qs) {
|
|
|
|
+ clear_tsk_thread_flag(prev, TIF_NOHZ);
|
|
|
|
+ set_tsk_thread_flag(next, TIF_NOHZ);
|
|
|
|
+ }
|
|
|
|
+}
|
|
|
|
+#endif /* #ifdef CONFIG_RCU_USER_QS */
|
|
|
|
+
|
|
#if defined(CONFIG_PROVE_RCU) && defined(CONFIG_HOTPLUG_CPU)
|
|
#if defined(CONFIG_PROVE_RCU) && defined(CONFIG_HOTPLUG_CPU)
|
|
|
|
|
|
/*
|
|
/*
|