// Enter scheduler. Must hold only ptable.lock // and have changed proc->state. void sched(void) { int intena; //show_callstk ("sched"); if(!holding(&ptable.lock)) { panic("sched ptable.lock"); } if(cpu->ncli != 1) { panic("sched locks"); } if(proc->state == RUNNING) { panic("sched running"); } if(int_enabled ()) { panic("sched interruptible"); } intena = cpu->intena; swtch(&proc->context, cpu->scheduler); cpu->intena = intena; }
void keyboard_init(void) { if (int_enabled()) int_disable(); cons_printf("Initialize keyboard ............"); x86_ps2_init(); /* Start out with no shift keys enabled. */ s_shiftstate = 0; /* Buffer is initially empty. */ s_queue_head = s_queue_tail = 0; /* Install interrupt handler */ irq_install_handler(KEYB_IRQ, &keyboard_int_handler); irq_enable(KEYB_IRQ); int_enable(); g_preemption = true; cons_printf(".... [OK]\n"); }