ladybird/Kernel
Liav A 36f6351edc Kernel: Restore IDE PIO functionality
This change can be actually seen as two logical changes, the first
change is about to ensure we only read the ATA Status register only
once, because if we read it multiple times, we acknowledge interrupts
unintentionally. To solve this issue, we always use the alternate Status
register and only read the original status register in the IRQ handler.

The second change is how we handle interrupts - if we use DMA, we can
just complete the request and return from the IRQ handler. For PIO mode,
it's more complicated. For PIO write operation, after setting the ATA
registers, we send out the data to IO port, and wait for an interrupt.
For PIO read operation, we set the ATA registers, and wait for an
interrupt to fire, then we just read from the data IO port.
2021-02-03 10:18:16 +01:00
..
ACPI Meta: Split debug defines into multiple headers. 2021-01-26 21:20:00 +01:00
API Kernel: Add a way to specify which memory regions can make syscalls 2021-02-02 20:13:44 +01:00
Arch Kernel: Limit the size of stack traces 2021-02-02 18:58:26 +01:00
Devices Base: Rename some keymaps to use xx-xx format where appropriate 2021-02-02 16:53:11 +01:00
FileSystem Kernel: Add a way to specify which memory regions can make syscalls 2021-02-02 20:13:44 +01:00
Heap Meta: Split debug defines into multiple headers. 2021-01-26 21:20:00 +01:00
Interrupts Kernel: Use the CPU# as logical apic id 2021-01-27 22:48:41 +01:00
Modules Kernel: Module symbol declarations for type-checking 2020-08-12 20:40:59 +02:00
Net Kernel: Use KResult a bit more in the IPv4 networking code 2021-01-31 12:13:16 +01:00
PCI Kernel: Fix PCI bridge enumeration 2021-01-31 19:06:40 +01:00
Storage Kernel: Restore IDE PIO functionality 2021-02-03 10:18:16 +01:00
Syscalls Kernel: Don't allow sys$msyscall() on non-mmap regions 2021-02-02 20:16:13 +01:00
Tasks AK: Simplify constructors and conversions from nullptr_t 2021-01-12 09:11:45 +01:00
Time Kernel: Make Processor::id a static function 2021-01-27 21:12:24 +01:00
TTY Meta: Split debug defines into multiple headers. 2021-01-26 21:20:00 +01:00
VM Kernel: Add a way to specify which memory regions can make syscalls 2021-02-02 20:13:44 +01:00
.gitignore Meta: Expect sync-local.sh script at repository root 2021-01-30 09:18:46 +01:00
Assertions.h Everywhere: Switch from (void) to [[maybe_unused]] (#4473) 2020-12-21 00:09:48 +01:00
CMakeLists.txt Kernel: Introduce the MemoryDevice 2021-02-01 17:13:23 +01: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 Meta+Kernel: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
CommandLine.h Kernel: Copy command line to a safe place 2020-08-25 09:48:48 +02:00
Console.cpp Kernel+LibC: Turn errno codes into a strongly typed enum 2021-01-20 23:20:02 +01:00
Console.h Kernel: Make device generate their own names 2021-01-22 22:17:39 +01:00
CoreDump.cpp Kernel: Generate coredump backtraces from "threads for coredump" list 2021-01-28 08:41:18 +01:00
CoreDump.h Kernel: Embed a Metadata notes entry in coredumps 2020-12-30 16:28:27 +01:00
Debug.h.in Meta: Split debug defines into multiple headers. 2021-01-26 21:20:00 +01:00
DMI.cpp Kernel: Set file size for smbios_entry_point and DMI blobs in ProcFS 2021-02-01 17:13:23 +01:00
DMI.h Kernel: Set file size for smbios_entry_point and DMI blobs in ProcFS 2021-02-01 17:13:23 +01:00
DoubleBuffer.cpp Kernel: Merge PurgeableVMObject into AnonymousVMObject 2021-01-01 23:43:44 +01:00
DoubleBuffer.h Kernel: Move block condition evaluation out of the Scheduler 2020-11-30 13:17:02 +01:00
Forward.h Kernel: Some futex improvements 2021-01-17 20:30:31 +01:00
FutexQueue.cpp Meta: Split debug defines into multiple headers. 2021-01-26 21:20:00 +01:00
FutexQueue.h Kernel: Some futex improvements 2021-01-17 20:30:31 +01:00
init.cpp Kernel: Introduce the MemoryDevice 2021-02-01 17:13:23 +01:00
IO.h Kernel: Convert a bunch of String::format() => String::formatted() 2021-01-11 22:07:01 +01:00
KBuffer.h AK: Simplify constructors and conversions from nullptr_t 2021-01-12 09:11:45 +01:00
KBufferBuilder.cpp Kernel: Improve ProcFS behavior in low memory conditions 2021-01-03 22:12:19 +01:00
KBufferBuilder.h Kernel: Improve ProcFS behavior in low memory conditions 2021-01-03 22:12:19 +01:00
kprintf.cpp Everywhere: Replace a bundle of dbg with dbgln. 2021-01-09 21:11:09 +01:00
KResult.h Everywhere: Replace a bundle of dbg with dbgln. 2021-01-22 22:14:30 +01:00
kstdio.h LibC: Enable compiler warnings for printf format strings 2020-12-26 10:05:50 +01:00
KSyms.cpp Kernel: Do not assert if unable to load kernel symbols 2021-01-22 22:17:39 +01:00
KSyms.h Kernel: Update cryptically-named functions related to symbolication 2020-04-08 17:19:46 +02:00
linker.ld Kernel: Move kmalloc heaps and super pages inside .bss segment 2021-01-22 22:17:39 +01:00
Lock.cpp Meta: Split debug defines into multiple headers. 2021-01-26 21:20:00 +01:00
Lock.h Everywhere: Use CMake to generate AK/Debug.h. 2021-01-25 09:47:36 +01:00
LockMode.h Kernel: Fix Lock race causing infinite spinning between two threads 2020-12-16 23:38:17 +01: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 Kernel: Parse boot modules from Multiboot specification 2021-01-22 22:17:39 +01:00
PerformanceEventBuffer.cpp Kernel+LibC: Turn errno codes into a strongly typed enum 2021-01-20 23:20:02 +01:00
PerformanceEventBuffer.h Kernel: Prune uninteresting kernel frames from profiling samples 2021-01-17 14:36:53 +01:00
PhysicalAddress.h Everywhere: Replace a bundle of dbg with dbgln. 2021-01-09 21:11:09 +01:00
Process.cpp Kernel: Add a way to specify which memory regions can make syscalls 2021-02-02 20:13:44 +01:00
Process.h Kernel: Add a way to specify which memory regions can make syscalls 2021-02-02 20:13:44 +01:00
ProcessGroup.cpp Kernel: Move block condition evaluation out of the Scheduler 2020-11-30 13:17:02 +01:00
ProcessGroup.h Kernel: Move block condition evaluation out of the Scheduler 2020-11-30 13:17:02 +01:00
Ptrace.cpp Kernel+LibC: Turn errno codes into a strongly typed enum 2021-01-20 23:20:02 +01:00
Ptrace.h Meta+Kernel: Make clang-format-10 clean 2020-09-25 21:18:17 +02:00
Random.cpp Kernel: Make KernelRng thread-safe 2021-01-28 08:15:26 +01:00
Random.h Kernel: Make KernelRng thread-safe 2021-01-28 08:15:26 +01: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: Retire SchedulerData and add Thread lookup table 2021-01-28 17:35:41 +01:00
Scheduler.h Kernel: Retire SchedulerData and add Thread lookup table 2021-01-28 17:35:41 +01:00
SpinLock.h Kernel: Tag more methods and types as [[nodiscard]] 2020-12-27 11:09:30 +01:00
StdLib.cpp Kernel: Add safe atomic functions 2021-01-17 20:30:31 +01:00
StdLib.h Kernel: Add safe atomic functions 2021-01-17 20:30:31 +01:00
Syscall.cpp Kernel: Add a way to specify which memory regions can make syscalls 2021-02-02 20:13:44 +01:00
Thread.cpp Kernel: Retire SchedulerData and add Thread lookup table 2021-01-28 17:35:41 +01:00
Thread.h Kernel: Retire SchedulerData and add Thread lookup table 2021-01-28 17:35:41 +01:00
ThreadBlockers.cpp Meta: Split debug defines into multiple headers. 2021-01-26 21:20:00 +01: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: Improve time keeping and dramatically reduce interrupt load 2020-12-21 18:26:12 +01:00
TimerQueue.h Kernel: Specify default memory order for some non-synchronizing Atomics 2021-01-04 19:13:52 +01:00
UnixTypes.h Kernel: Fix enum of sysconf values to be in the correct order 2021-02-01 17:13:23 +01:00
UnveilNode.h Kernel: Allow 'elevating' unveil permissions if implicitly inherited from '/' 2020-12-26 16:10:04 +01:00
UserOrKernelBuffer.cpp AK: Add StringBuilder::appendff using the new format. 2020-09-22 15:06:40 +02:00
UserOrKernelBuffer.h FileSystem: Use OutputMemoryStream instead of BufferStream. 2020-09-15 20:36:45 +02:00
VirtualAddress.h AK: Add Formatter<FormatString> as helper class. 2021-01-09 21:11:09 +01:00
WaitQueue.cpp Meta: Split debug defines into multiple headers. 2021-01-26 21:20:00 +01:00
WaitQueue.h Kernel: Fix some race conditions with Lock and waiting/waking threads 2021-01-25 22:54:55 +01:00