1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-10-13 19:42:08 +00:00
serenity/Kernel
Tom e31f8b56e8 Kernel: Fix thread donation hanging the system
Fixes two flaws in the thread donation logic: Scheduler::donate_to
would never really donate, but just trigger a deferred yield. And
that deferred yield never actually donated to the beneficiary.

So, when we can't immediately donate, we need to save the beneficiary
and use this information as soon as we can perform the deferred
context switch.

Fixes #3495
2020-09-15 23:30:44 +02:00
..
ACPI Kernel: Add SMP IPI support 2020-07-06 17:07:44 +02:00
API Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
Arch Kernel: Handle safe_memcpy/safe_memset/safe_strnlen faults in irq handlers 2020-09-14 21:18:59 +02:00
Devices Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
FileSystem FileSystem: Use OutputMemoryStream instead of BufferStream. 2020-09-15 20:36:45 +02:00
Heap Kernel: Fix heap expansion loop 2020-09-09 20:14:30 +02:00
Interrupts Refactor: Replace usages of FixedArray with Vector. 2020-09-08 14:01:21 +02:00
Modules Kernel: Module symbol declarations for type-checking 2020-08-12 20:40:59 +02:00
Net Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
PCI Kernel: Add PCI::get_programming_interface(PCI::Address) 2020-09-03 21:02:47 +02:00
Syscalls Kernel: Use Userspace<> for sys$writev 2020-09-15 20:20:38 +02:00
Tasks Kernel: Require a reason to be passed to Thread::wait_on 2020-07-06 10:00:24 +02:00
Time AK: Remove FixedArray class. 2020-09-08 14:01:21 +02:00
TTY Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
VM Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +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: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +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: Copy command line to a safe place 2020-08-25 09:48:48 +02:00
CommandLine.h Kernel: Copy command line to a safe place 2020-08-25 09:48:48 +02:00
Console.cpp Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
Console.h Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
DoubleBuffer.cpp Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
DoubleBuffer.h Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
Forward.h Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
init.cpp Kernel/USB: Start fleshing out a basic UHCI controller driver :^) 2020-09-04 21:21:41 +02:00
IO.h Kernel: Absorb LibBareMetal back into the kernel 2020-05-16 12:00:04 +02:00
KBuffer.h Kernel: Make Inode::read_entire() return a KBuffer (not ByteBuffer) 2020-08-11 20:29:14 +02:00
KBufferBuilder.cpp AK: Rename KB, MB, GB to KiB, MiB, GiB 2020-08-16 16:33:28 +02:00
KBufferBuilder.h Kernel: Move all code into the Kernel namespace 2020-02-16 01:27:42 +01:00
kprintf.cpp Kernel: Stop supporting sprintf 2020-08-22 20:55:10 +02:00
KResult.h Kernel: Decorate KResult and KResultOr<T> methods with [[nodiscard]] 2020-08-09 00:13:39 +02:00
kstdio.h Kernel: Stop supporting sprintf 2020-08-22 20:55:10 +02:00
KSyms.cpp Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
KSyms.h Kernel: Update cryptically-named functions related to symbolication 2020-04-08 17:19:46 +02:00
linker.ld Kernel: Invoke heap constructors separately early on 2020-08-10 20:05: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: Don't use copy_from_user() for kernelspace read in perf events 2020-08-17 09:57:18 +02:00
PerformanceEventBuffer.h Kernel: PID/TID typing 2020-08-10 11:51:45 +02:00
PhysicalAddress.h Kernel: Absorb LibBareMetal back into the kernel 2020-05-16 12:00:04 +02:00
Process.cpp Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
Process.h Kernel: Use Userspace<> for sys$writev 2020-09-15 20:20:38 +02:00
ProcessGroup.cpp Kernel: Distinguish between new and old process groups with equal pgids 2020-08-19 21:21:34 +02:00
ProcessGroup.h Kernel: Distinguish between new and old process groups with equal pgids 2020-08-19 21:21:34 +02:00
Profiling.cpp AK: Rename KB, MB, GB to KiB, MiB, GiB 2020-08-16 16:33:28 +02:00
Profiling.h Kernel: More PID/TID typing 2020-08-10 11:51:45 +02:00
Ptrace.cpp Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +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: Switch singletons to use new Singleton class 2020-08-25 09:48:48 +02:00
Random.h Kernel: Switch singletons to use new Singleton class 2020-08-25 09:48:48 +02:00
RTC.cpp Kernel: Minor tweak to now() computation 2020-08-26 08:52:07 +02:00
RTC.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
Scheduler.cpp Kernel: Fix thread donation hanging the system 2020-09-15 23:30:44 +02:00
Scheduler.h Kernel: Fix thread donation hanging the system 2020-09-15 23:30:44 +02:00
SharedBuffer.cpp Kernel: Unbreak building with extra debug macros, part 2 2020-08-30 09:43:49 +02:00
SharedBuffer.h Kernel: PID/TID typing 2020-08-10 11:51:45 +02:00
SpinLock.h Kernel: Do not wait before first attempt at locking SpinLock (#3212) 2020-08-19 11:10:53 +02:00
StdLib.cpp Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
StdLib.h Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
Syscall.cpp Kernel: Request random numbers for syscall stack noise in larger chunks (#3125) 2020-08-13 21:05:08 +02:00
Thread.cpp Kernel: Don't symbolicate stack traces in IRQ handlers 2020-09-15 23:30:44 +02:00
Thread.h Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
ThreadTracer.cpp Kernel: PID/TID typing 2020-08-10 11:51:45 +02:00
ThreadTracer.h Kernel: PID/TID typing 2020-08-10 11:51:45 +02:00
TimerQueue.cpp Kernel: Switch singletons to use new Singleton class 2020-08-25 09:48:48 +02:00
TimerQueue.h Kernel: Switch singletons to use new Singleton class 2020-08-25 09:48:48 +02:00
UnixTypes.h Kernel+LibC+UE: Introduce SIGINFO (generated with ^T) 2020-09-09 21:10:23 +02:00
UserOrKernelBuffer.cpp Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
UserOrKernelBuffer.h FileSystem: Use OutputMemoryStream instead of BufferStream. 2020-09-15 20:36:45 +02:00
VirtualAddress.h Kernel: Absorb LibBareMetal back into the kernel 2020-05-16 12:00:04 +02:00
WaitQueue.cpp Kernel: Dequeue dying threads from WaitQueue 2020-08-06 10:02:55 +02:00
WaitQueue.h Kernel: Dequeue dying threads from WaitQueue 2020-08-06 10:02:55 +02:00