mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 02:57:42 +00:00
![]() We were previously relying on a side effect of the critical section in smp_process_pending_messages(): when exiting that section, it would process any pending deferred calls. Instead of relying on that, make the deferred invocations explicit by calling deferred_call_execute_pending() in exit_trap(). This ensures that deferred calls get processed before entering the scheduler at the end of exit_trap(). Since thread unblocking happens via deferred calls, the threads don't have to wait until the next scheduling opportunity when they could be ready *now*. :^) This was the main reason Tom's SMP branch ran slowly in non-SMP mode. |
||
---|---|---|
.. | ||
common | ||
i386 | ||
x86_64 | ||
ASM_wrapper.h | ||
CPU.h | ||
CPUID.h | ||
DescriptorTable.h | ||
InterruptDisabler.h | ||
Interrupts.h | ||
ISRStubs.h | ||
MSR.h | ||
PageDirectory.h | ||
PageFault.h | ||
Processor.h | ||
ProcessorInfo.h | ||
RegisterState.h | ||
SafeMem.h | ||
ScopedCritical.h | ||
SmapDisabler.h | ||
TrapFrame.h | ||
TSS.h |