Scheduler: Optimize by adding a proper reschedule function
This commit is contained in:
@@ -738,8 +738,7 @@ void Kernel::addWakeupEvent(u64 tick) {
|
||||
nextScheduledWakeupTick = tick;
|
||||
auto& scheduler = cpu.getScheduler();
|
||||
|
||||
scheduler.removeEvent(Scheduler::EventType::ThreadWakeup);
|
||||
scheduler.addEvent(Scheduler::EventType::ThreadWakeup, tick);
|
||||
scheduler.rescheduleEvent(Scheduler::EventType::ThreadWakeup, tick);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -52,9 +52,7 @@ void Kernel::pollTimers() {
|
||||
}
|
||||
}
|
||||
|
||||
void Kernel::cancelTimer(Timer* timer) {
|
||||
timer->running = false;
|
||||
}
|
||||
void Kernel::cancelTimer(Timer* timer) { timer->running = false; }
|
||||
|
||||
void Kernel::signalTimer(Handle timerHandle, Timer* timer) {
|
||||
timer->fired = true;
|
||||
@@ -115,8 +113,7 @@ void Kernel::svcSetTimer() {
|
||||
|
||||
Scheduler& scheduler = cpu.getScheduler();
|
||||
// Signal an event to poll timers as soon as possible
|
||||
scheduler.removeEvent(Scheduler::EventType::UpdateTimers);
|
||||
scheduler.addEvent(Scheduler::EventType::UpdateTimers, cpu.getTicks() + 1);
|
||||
scheduler.rescheduleEvent(Scheduler::EventType::UpdateTimers, cpu.getTicks() + 1);
|
||||
|
||||
// If the initial delay is 0 then instantly signal the timer
|
||||
if (initial == 0) {
|
||||
|
||||
Reference in New Issue
Block a user