Kernel: Optimize scheduler idling
Now after each interrupt we will ask the scheduler to reschedule if the current thread is the idle thread. This allows semaphore unblocking to be practically instant when there is only one thread executing. Now disk reading is back to ~3 MB/s for single threaded process
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
#include <kernel/InterruptController.h>
|
||||
#include <kernel/kmalloc.h>
|
||||
#include <kernel/Panic.h>
|
||||
#include <kernel/Scheduler.h>
|
||||
|
||||
#define INTERRUPT_HANDLER____(i, msg) \
|
||||
static void interrupt ## i () \
|
||||
@@ -132,6 +133,8 @@ found:
|
||||
// NOTE: Scheduler sends PIT eoi's
|
||||
if (irq != PIT_IRQ)
|
||||
InterruptController::get().eoi(irq);
|
||||
|
||||
Kernel::Scheduler::get().reschedule_if_idling();
|
||||
}
|
||||
|
||||
extern "C" void handle_irq_common();
|
||||
|
||||
Reference in New Issue
Block a user