mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 09:58:11 +00:00
Kernel/SMP: Make entering/leaving critical sections multi-processor safe
By making these functions static we close a window where we could get preempted after calling Processor::current() and move to another processor. Co-authored-by: Tom <tomut@yahoo.com>
This commit is contained in:
parent
369e3da6a2
commit
9babb92a4b
11 changed files with 82 additions and 53 deletions
|
@ -257,7 +257,7 @@ bool Scheduler::yield()
|
|||
auto current_thread = Thread::current();
|
||||
dbgln_if(SCHEDULER_DEBUG, "Scheduler[{}]: yielding thread {} in_irq={}", proc.get_id(), *current_thread, proc.in_irq());
|
||||
VERIFY(current_thread != nullptr);
|
||||
if (proc.in_irq() || proc.in_critical()) {
|
||||
if (proc.in_irq() || Processor::in_critical()) {
|
||||
// If we're handling an IRQ we can't switch context, or we're in
|
||||
// a critical section where we don't want to switch contexts, then
|
||||
// delay until exiting the trap or critical section
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue