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) {
|
||||
|
||||
@@ -19,8 +19,7 @@ void CirclePadPro::receivePayload(Payload payload) {
|
||||
// Convert to cycles
|
||||
period = Scheduler::nsToCycles(periodNs);
|
||||
|
||||
scheduler.removeEvent(Scheduler::EventType::UpdateIR);
|
||||
scheduler.addEvent(Scheduler::EventType::UpdateIR, scheduler.currentTimestamp + period);
|
||||
scheduler.rescheduleEvent(Scheduler::EventType::UpdateIR, scheduler.currentTimestamp + period);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -447,8 +447,7 @@ void Y2RService::startConversion(u32 messagePointer) {
|
||||
|
||||
// Remove any potential pending Y2R event and schedule a new one
|
||||
Scheduler& scheduler = kernel.getScheduler();
|
||||
scheduler.removeEvent(Scheduler::EventType::SignalY2R);
|
||||
scheduler.addEvent(Scheduler::EventType::SignalY2R, scheduler.currentTimestamp + delayTicks);
|
||||
scheduler.rescheduleEvent(Scheduler::EventType::SignalY2R, scheduler.currentTimestamp + delayTicks);
|
||||
}
|
||||
|
||||
void Y2RService::isFinishedSendingYUV(u32 messagePointer) {
|
||||
|
||||
Reference in New Issue
Block a user