|
@@ -48,6 +48,7 @@
|
|
#include <linux/unistd.h>
|
|
#include <linux/unistd.h>
|
|
#include <linux/kallsyms.h>
|
|
#include <linux/kallsyms.h>
|
|
#include <linux/uaccess.h>
|
|
#include <linux/uaccess.h>
|
|
|
|
+#include <linux/rcupdate.h>
|
|
|
|
|
|
#include <asm/io.h>
|
|
#include <asm/io.h>
|
|
#include <asm/asm-offsets.h>
|
|
#include <asm/asm-offsets.h>
|
|
@@ -69,8 +70,10 @@ void cpu_idle(void)
|
|
|
|
|
|
/* endless idle loop with no priority at all */
|
|
/* endless idle loop with no priority at all */
|
|
while (1) {
|
|
while (1) {
|
|
|
|
+ rcu_idle_enter();
|
|
while (!need_resched())
|
|
while (!need_resched())
|
|
barrier();
|
|
barrier();
|
|
|
|
+ rcu_idle_exit();
|
|
schedule_preempt_disabled();
|
|
schedule_preempt_disabled();
|
|
check_pgt_cache();
|
|
check_pgt_cache();
|
|
}
|
|
}
|