ladybird/Kernel/Devices
Tom da5cc34ebb Kernel: Fix some issues related to fixes and block conditions
Fix some problems with join blocks where the joining thread block
condition was added twice, which lead to a crash when trying to
unblock that condition a second time.

Deferred block condition evaluation by File objects were also not
properly keeping the File object alive, which lead to some random
crashes and corruption problems.

Other problems were caused by the fact that the Queued state didn't
handle signals/interruptions consistently. To solve these issues we
remove this state entirely, along with Thread::wait_on and change
the WaitQueue into a BlockCondition instead.

Also, deliver signals even if there isn't going to be a context switch
to another thread.

Fixes #4336 and #4330
2020-12-12 21:28:12 +01:00
..
AsyncDeviceRequest.cpp Kernel: Fix some issues related to fixes and block conditions 2020-12-12 21:28:12 +01:00
AsyncDeviceRequest.h Kernel: Implement an asynchronous device request stack 2020-11-12 18:04:30 +01:00
BlockDevice.cpp Kernel: Implement an asynchronous device request stack 2020-11-12 18:04:30 +01:00
BlockDevice.h Kernel: Implement an asynchronous device request stack 2020-11-12 18:04:30 +01:00
BXVGADevice.cpp Kernel: Return ENOMEM in more places 2020-09-16 20:38:19 +02:00
BXVGADevice.h Kernel: Implement an asynchronous device request stack 2020-11-12 18:04:30 +01:00
CharacterDevice.cpp Kernel: Move all code into the Kernel namespace 2020-02-16 01:27:42 +01:00
CharacterDevice.h Kernel: Move all code into the Kernel namespace 2020-02-16 01:27:42 +01:00
Device.cpp Kernel: Move block condition evaluation out of the Scheduler 2020-11-30 13:17:02 +01:00
Device.h Kernel: Implement an asynchronous device request stack 2020-11-12 18:04:30 +01:00
DiskPartition.cpp Kernel: Implement an asynchronous device request stack 2020-11-12 18:04:30 +01:00
DiskPartition.h Kernel: Implement an asynchronous device request stack 2020-11-12 18:04:30 +01:00
EBRPartitionTable.cpp Kernel: Implement an asynchronous device request stack 2020-11-12 18:04:30 +01:00
EBRPartitionTable.h Kernel: Move all code into the Kernel namespace 2020-02-16 01:27:42 +01:00
FullDevice.cpp Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
FullDevice.h Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
GPTPartitionTable.cpp Kernel: Implement an asynchronous device request stack 2020-11-12 18:04:30 +01:00
GPTPartitionTable.h Kernel: Move all code into the Kernel namespace 2020-02-16 01:27:42 +01:00
I8042Controller.cpp Revert "Kernel: Keep reading from i8042 until the buffer is empty" 2020-11-14 22:09:48 +01:00
I8042Controller.h Kernel: Add I8042Controller to detect and manage PS/2 devices 2020-11-12 18:04:16 +01:00
KeyboardDevice.cpp Kernel: Move block condition evaluation out of the Scheduler 2020-11-30 13:17:02 +01:00
KeyboardDevice.h Kernel: Add I8042Controller to detect and manage PS/2 devices 2020-11-12 18:04:16 +01:00
MBRPartitionTable.cpp Everywhere: Fix more typos 2020-10-03 12:36:49 +02:00
MBRPartitionTable.h Kernel: Move all code into the Kernel namespace 2020-02-16 01:27:42 +01:00
MBVGADevice.cpp Kernel: Return ENOMEM in more places 2020-09-16 20:38:19 +02:00
MBVGADevice.h Kernel: Implement an asynchronous device request stack 2020-11-12 18:04:30 +01:00
NullDevice.cpp Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
NullDevice.h Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
PATAChannel.cpp Kernel: Implement an asynchronous device request stack 2020-11-12 18:04:30 +01:00
PATAChannel.h Kernel: Implement an asynchronous device request stack 2020-11-12 18:04:30 +01:00
PATADiskDevice.cpp Kernel: Implement an asynchronous device request stack 2020-11-12 18:04:30 +01:00
PATADiskDevice.h Kernel: Implement an asynchronous device request stack 2020-11-12 18:04:30 +01:00
PCSpeaker.cpp Meta+Kernel: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
PCSpeaker.h Meta: Add license header to source files 2020-01-18 09:45:54 +01:00
PS2MouseDevice.cpp Kernel: Move block condition evaluation out of the Scheduler 2020-11-30 13:17:02 +01:00
PS2MouseDevice.h Kernel: Fix mouse lag when VMWareBackdoor absolute mode is enabled 2020-11-14 22:09:48 +01:00
RandomDevice.cpp Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
RandomDevice.h Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
SB16.cpp Kernel: Fix some issues related to fixes and block conditions 2020-12-12 21:28:12 +01:00
SB16.h Meta+Kernel: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
SerialDevice.cpp Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
SerialDevice.h Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
UHCIController.cpp Kernel/USB: Disable autodetection of UHCI controllers for now 2020-09-05 15:42:54 +02:00
UHCIController.h Kernel: Remove unnecessary class member in UHCIController 2020-09-19 18:39:09 +02:00
VMWareBackdoor.cpp Meta+Kernel: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
VMWareBackdoor.h Kernel: Switch singletons to use new Singleton class 2020-08-25 09:48:48 +02:00
ZeroDevice.cpp Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00
ZeroDevice.h Kernel: Make copy_to/from_user safe and remove unnecessary checks 2020-09-13 21:19:15 +02:00