|
@@ -210,33 +210,14 @@ void initial_thread_cb(void (*proc)(void *), void *arg)
|
|
|
kmalloc_ok = save_kmalloc_ok;
|
|
|
}
|
|
|
|
|
|
-void default_idle(void)
|
|
|
+void arch_cpu_idle(void)
|
|
|
{
|
|
|
unsigned long long nsecs;
|
|
|
|
|
|
- while (1) {
|
|
|
- /* endless idle loop with no priority at all */
|
|
|
-
|
|
|
- /*
|
|
|
- * although we are an idle CPU, we do not want to
|
|
|
- * get into the scheduler unnecessarily.
|
|
|
- */
|
|
|
- if (need_resched())
|
|
|
- schedule();
|
|
|
-
|
|
|
- tick_nohz_idle_enter();
|
|
|
- rcu_idle_enter();
|
|
|
- nsecs = disable_timer();
|
|
|
- idle_sleep(nsecs);
|
|
|
- rcu_idle_exit();
|
|
|
- tick_nohz_idle_exit();
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-void cpu_idle(void)
|
|
|
-{
|
|
|
cpu_tasks[current_thread_info()->cpu].pid = os_getpid();
|
|
|
- default_idle();
|
|
|
+ nsecs = disable_timer();
|
|
|
+ idle_sleep(nsecs);
|
|
|
+ local_irq_enable();
|
|
|
}
|
|
|
|
|
|
int __cant_sleep(void) {
|