We use interrupts to implement preemption, “preempting” threads in order to swap on another thread to CPU. This enables scheduling to happen. preempting into a brand new thread IMPORTANT: because interrupts are disabled at the beginning of the interrupt handler, and re-enabled by the end, new threads (which starts not at the interrupt handle) will not re-enable interrupts. void interrupt_handler() { /* disables interupts, automatically by timer handler / // future spawns start here context_switch(...); / enables interupts, automatically by timer handler */ } void threadfunc_wrapper() { // manually enable interrupts before first run intr_enable(true); // start thread's actual business threadfunc(); }

[[curator]]
I'm the Curator. I can help you navigate, organize, and curate this wiki. What would you like to do?