void
thread_start (void)
{
- /* Create the idle thread with maximum priority. This ensures
- that it will be scheduled soon after interrupts are enabled.
- The idle thread will block almost immediately upon
- scheduling, and subsequently it will never appear on the
- ready list, so the priority here is otherwise
- unimportant. */
+ /* Create the idle thread. */
struct semaphore idle_started;
sema_init (&idle_started, 0);
- thread_create ("idle", PRI_MAX, idle, &idle_started);
+ thread_create ("idle", PRI_MIN, idle, &idle_started);
/* Start preemptive thread scheduling. */
intr_enable ();
See [IA32-v2a] "HLT", [IA32-v2b] "STI", and [IA32-v3a]
7.11.1 "HLT Instruction". */
- asm ("sti; hlt");
+ asm volatile ("sti; hlt" : : : "memory");
}
}