|
@@ -26,6 +26,7 @@
|
|
#include <linux/ptrace.h>
|
|
#include <linux/ptrace.h>
|
|
#include <linux/unistd.h>
|
|
#include <linux/unistd.h>
|
|
#include <linux/hardirq.h>
|
|
#include <linux/hardirq.h>
|
|
|
|
+#include <linux/rcupdate.h>
|
|
|
|
|
|
#include <asm/io.h>
|
|
#include <asm/io.h>
|
|
#include <asm/uaccess.h>
|
|
#include <asm/uaccess.h>
|
|
@@ -82,6 +83,7 @@ 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()) {
|
|
void (*idle)(void) = pm_idle;
|
|
void (*idle)(void) = pm_idle;
|
|
|
|
|
|
@@ -90,6 +92,7 @@ void cpu_idle (void)
|
|
|
|
|
|
idle();
|
|
idle();
|
|
}
|
|
}
|
|
|
|
+ rcu_idle_exit();
|
|
schedule_preempt_disabled();
|
|
schedule_preempt_disabled();
|
|
}
|
|
}
|
|
}
|
|
}
|