ladybird/Kernel
Tom f011c420c1 Kernel: Fix signal delivery when no syscall is made
This fixes a regression introduced by the new software context
switching where the Kernel would not deliver a signal unless the
process is making system calls. This is because the TSS no longer
updates the CS value, so the scheduler never considered delivery
as the process always appeared to be in kernel mode. With software
context switching we can just set up the signal trampoline at
any time and when the processor returns back to user mode it'll
get executed. This should fix e.g. killing programs that are
stuck in some tight loop that doesn't make any system calls and
is only pre-empted by the timer interrupt.

Fixes #2958
2020-08-02 20:50:29 +02:00
..
ACPI Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
API Kernel: Use Userspace<T> in setkeymap syscall 2020-08-02 10:56:33 +02:00
Arch Kernel: Prevent recursive calls into the scheduler 2020-08-02 17:15:11 +02:00
Devices Kernel: Remove SmapDisabler in sys$ioctl() 2020-07-31 00:17:25 +02:00
FileSystem Kernel: Remove ProcessInspectionHandle and make Process RefCounted 2020-08-02 17:15:11 +02:00
Heap Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
Interrupts Kernel: Fix some flaws that caused crashes or hangs during boot 2020-07-09 23:24:55 +02:00
Modules Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
Net Kernel: Remove SmapDisabler in sys$setsockopt() 2020-07-31 00:29:26 +02:00
PCI Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
Syscalls Kernel: Remove ProcessInspectionHandle and make Process RefCounted 2020-08-02 17:15:11 +02:00
Tasks Kernel: Require a reason to be passed to Thread::wait_on 2020-07-06 10:00:24 +02:00
Time Kernel: Use map_typed() in HPET code and add a register access helper 2020-06-21 00:58:55 +02:00
TTY Kernel: Remove ProcessInspectionHandle and make Process RefCounted 2020-08-02 17:15:11 +02:00
VM Kernel: Rename region_from_foo() => find_region_from_foo() 2020-07-30 23:52:28 +02:00
.gitignore Meta: Removed all gitignore in the source tree only keeping the root one 2019-06-30 10:41:26 +02:00
Assertions.h Kernel: List all CPUs in /proc/cpuinfo 2020-07-01 12:07:01 +02:00
CMakeLists.txt Kernel: Move syscall implementations out of Process.cpp 2020-07-30 23:40:57 +02:00
CMOS.cpp Kernel: Absorb LibBareMetal back into the kernel 2020-05-16 12:00:04 +02:00
CMOS.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
CommandLine.cpp Kernel: Remove CommandLine::get() in favor of lookup() 2020-04-18 14:22:42 +02:00
CommandLine.h Kernel: Remove CommandLine::get() in favor of lookup() 2020-04-18 14:22:42 +02:00
Console.cpp Kernel: Protect Console with SpinLock 2020-07-01 12:07:01 +02:00
Console.h Kernel: Port VirtualConsole to LibVT :^) 2020-05-27 11:19:38 +02:00
DoubleBuffer.cpp AK: Reduce header dependency graph of String.h 2020-03-23 13:48:44 +01:00
DoubleBuffer.h Kernel: Move all code into the Kernel namespace 2020-02-16 01:27:42 +01:00
Forward.h Kernel: Prevent recursive calls into the scheduler 2020-08-02 17:15:11 +02:00
init.cpp Kernel: Make BXVGA detection actually detect VBoxVGA 2020-07-30 17:01:41 +02:00
IO.h Kernel: Absorb LibBareMetal back into the kernel 2020-05-16 12:00:04 +02:00
KBuffer.h AK: Reduce header dependency graph of String.h 2020-03-23 13:48:44 +01:00
KBufferBuilder.cpp Kernel: Fix KBufferBuilder::append() 2020-07-05 12:26:27 +02:00
KBufferBuilder.h Kernel: Move all code into the Kernel namespace 2020-02-16 01:27:42 +01:00
kprintf.cpp Kernel: Allow recursion when writing to the debug log 2020-07-03 19:32:34 +02:00
KResult.h Kernel: Always inline some KResult / KResultOr<> methods 2020-06-02 21:49:47 +02:00
kstdio.h Kernel: Remove awkward "#define printf dbgprintf" 2020-05-16 12:03:25 +02:00
KSyms.cpp Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
KSyms.h Kernel: Update cryptically-named functions related to symbolication 2020-04-08 17:19:46 +02:00
linker.ld Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
Lock.cpp Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
Lock.h AK: Add ALWAYS_INLINE, NEVER_INLINE and FLATTEN macros 2020-04-30 11:43:25 +02:00
mkmap.sh Build: Switch to CMake :^) 2020-05-14 20:15:18 +02:00
Module.h Kernel: Move all code into the Kernel namespace 2020-02-16 01:27:42 +01:00
Multiboot.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
PerformanceEventBuffer.cpp Kernel: Turn Thread::current and Process::current into functions 2020-07-01 12:07:01 +02:00
PerformanceEventBuffer.h AK: Add global FlatPtr typedef. It's u32 or u64, based on sizeof(void*) 2020-03-08 13:06:51 +01:00
PhysicalAddress.h Kernel: Absorb LibBareMetal back into the kernel 2020-05-16 12:00:04 +02:00
Process.cpp Kernel: Fix signal delivery when no syscall is made 2020-08-02 20:50:29 +02:00
Process.h Kernel: Remove ProcessInspectionHandle and make Process RefCounted 2020-08-02 17:15:11 +02:00
Profiling.cpp LibELF: Move ELF classes into namespace ELF 2020-04-11 22:41:05 +02:00
Profiling.h Kernel: Bump the max stack frame count in sample profiles to 50 2020-04-12 11:00:38 +02:00
Ptrace.cpp Kernel: Use Userspace<T> in ptrace syscall 2020-08-02 00:29:04 +02:00
Ptrace.h Kernel: Move headers intended for userspace use into Kernel/API/ 2020-07-04 17:22:23 +02:00
Random.cpp Kernel: Require a reason to be passed to Thread::wait_on 2020-07-06 10:00:24 +02:00
Random.h Kernel: Make Random work on CPUs without rdrand 2020-06-27 19:40:33 +02:00
RTC.cpp Kernel: Fix awkward RTC log message at boot 2020-04-08 17:19:46 +02:00
RTC.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
Scheduler.cpp Kernel: Fix signal delivery when no syscall is made 2020-08-02 20:50:29 +02:00
Scheduler.h Kernel: Prevent recursive calls into the scheduler 2020-08-02 17:15:11 +02:00
SharedBuffer.cpp AK: Make Vector::unstable_remove() return the removed value 2020-07-05 12:26:27 +02:00
SharedBuffer.h Kernel: Tidy up SharedBuffer interface 2020-05-16 09:44:00 +02:00
SpinLock.h Kernel: Simplify the ScopedSpinLock template 2020-07-30 23:43:37 +02:00
StdLib.cpp Kernel+LibC: Implement 'memmem' 2020-08-01 08:39:26 +02:00
StdLib.h Kernel+LibC: Implement 'memmem' 2020-08-01 08:39:26 +02:00
Syscall.cpp Kernel: Rename region_from_foo() => find_region_from_foo() 2020-07-30 23:52:28 +02:00
Thread.cpp Kernel: Fix signal delivery when no syscall is made 2020-08-02 20:50:29 +02:00
Thread.h Kernel: Fix signal delivery when no syscall is made 2020-08-02 20:50:29 +02:00
ThreadTracer.cpp ptrace: Add PT_SETREGS 2020-04-13 00:53:22 +02:00
ThreadTracer.h Debugger: Add DebugSession 2020-04-13 00:53:22 +02:00
TimerQueue.cpp Kernel: Update TimerQueue next due timer only when necessary 2020-04-27 11:24:21 +02:00
TimerQueue.h Kernel: Expose timers via a TimerId type 2020-04-27 11:14:41 +02:00
UnixTypes.h Kernel: Add _SC_PAGESIZE to sysconf 2020-07-31 18:26:33 +02:00
VirtualAddress.h Kernel: Absorb LibBareMetal back into the kernel 2020-05-16 12:00:04 +02:00
WaitQueue.cpp Kernel: Enhance WaitQueue to remember pending wakes 2020-07-06 10:00:24 +02:00
WaitQueue.h Kernel: Enhance WaitQueue to remember pending wakes 2020-07-06 10:00:24 +02:00