mirror of
https://github.com/RGBCube/serenity
synced 2025-06-01 10:08:10 +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
|
@ -66,8 +66,8 @@ FlatPtr Processor::init_context(Thread& thread, bool leave_crit)
|
|||
if (leave_crit) {
|
||||
// Leave the critical section we set up in in Process::exec,
|
||||
// but because we still have the scheduler lock we should end up with 1
|
||||
m_in_critical--; // leave it without triggering anything or restoring flags
|
||||
VERIFY(in_critical() == 1);
|
||||
VERIFY(in_critical() == 2);
|
||||
m_in_critical = 1; // leave it without triggering anything or restoring flags
|
||||
}
|
||||
|
||||
u64 kernel_stack_top = thread.kernel_stack_top();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue