Kernel/aarch64: Implement Processor::check_invoke_scheduler()

This commit is contained in:
Timon Kruiper 2022-12-22 13:34:58 +01:00 committed by Andrew Kaster
parent f6f43fd65e
commit 993b7495ba
2 changed files with 10 additions and 1 deletions

View file

@ -11,6 +11,7 @@
#include <Kernel/Arch/TrapFrame.h>
#include <Kernel/Arch/aarch64/ASM_wrapper.h>
#include <Kernel/Arch/aarch64/CPU.h>
#include <Kernel/Scheduler.h>
#include <Kernel/Thread.h>
#include <Kernel/Time/TimeManagement.h>
@ -171,7 +172,14 @@ ErrorOr<Vector<FlatPtr, 32>> Processor::capture_stack_trace(Thread& thread, size
void Processor::check_invoke_scheduler()
{
TODO_AARCH64();
VERIFY_INTERRUPTS_DISABLED();
VERIFY(!m_in_irq);
VERIFY(!m_in_critical);
VERIFY(&Processor::current() == this);
if (m_invoke_scheduler_async && m_scheduler_initialized) {
m_invoke_scheduler_async = false;
Scheduler::invoke_async();
}
}
}

View file

@ -279,6 +279,7 @@ private:
FlatPtr m_in_irq { 0 };
bool m_in_scheduler { false };
bool m_invoke_scheduler_async { false };
bool m_scheduler_initialized { false };
};
}