1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 02:27:35 +00:00
serenity/Kernel/Arch/x86/common
Andreas Kling a971de89d3 Kernel/SMP: Process the deferred call queue in exit_trap()
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.
2021-08-09 13:35:52 +02:00
..
ASM_wrapper.cpp Kernel: Move special sections into Sections.h 2021-06-24 00:38:23 +02:00
CPU.cpp Kernel: Remove unused header includes 2021-08-01 08:10:16 +02:00
Interrupts.cpp Kernel: Rename Process::space() => Process::address_space() 2021-08-06 14:05:58 +02:00
Processor.cpp Kernel/SMP: Process the deferred call queue in exit_trap() 2021-08-09 13:35:52 +02:00
ProcessorInfo.cpp Kernel: Add stubs for missing x86_64 functionality 2021-06-24 09:27:13 +02:00
SafeMem.cpp Kernel: Add missing .globl definitions 2021-07-23 22:13:43 +02:00
TrapFrame.cpp Kernel: Pull apart CPU.h 2021-06-24 00:38:23 +02:00