summaryrefslogtreecommitdiff
path: root/Kernel/Interrupts
AgeCommit message (Collapse)Author
2020-03-19Interrupts: Add an interface to determine if SMP is enabledLiav A
2020-03-19Kernel: Use a const reference to RegisterState in IRQ handlingLiav A
2020-03-09LibBareMetal: Return FlatPtr from PhysicalAddress::offset_in_page()Liav A
2020-03-06Kernel: Simplify a bunch of dbg() and klog() callsAndreas Kling
LogStream can handle VirtualAddress and PhysicalAddress directly.
2020-03-06Kernel: Shorten the model name of i8529 PIC classLiav A
2020-03-06Kernel: Change data in /proc/interrupts to be more richerLiav A
Also, during interrupt handlers' enumeration, we call all interrupts handlers that are not UnhandledInterruptHandler.
2020-03-06Kernel: Change HandlerPurpose to HandlerTypeLiav A
Also, GenericInterruptHandler class requires to implement two new methods.
2020-03-06Kernel: Simplify APIC::enable()Liav A
We install a SpuriousInterruptHandler when calling APIC::enable(), and we don't enable local interrupts for now.
2020-03-06Kernel: Acquire ISA interrupt overrides from Interrupt ManagementLiav A
Also, InterruptDisabler were added to prevent critical function from being interrupted. In addition, the interrupt numbers are abstracted from IDT offsets, thus, allowing to create a better routing scheme when using IOAPICs for interrupt redirection.
2020-03-02Kernel: Run clang-format on various filesLiav A
2020-03-02Kernel: Use klog() instead of kprintf()Liav A
Also, duplicate data in dbg() and klog() calls were removed. In addition, leakage of virtual address to kernel log is prevented. This is done by replacing kprintf() calls to dbg() calls with the leaked data instead. Also, other kprintf() calls were replaced with klog().
2020-02-29Kernel: Simplify interrupt managementLiav A
The IRQController object is RefCounted, and is shared between the InterruptManagement class & IRQ handlers' classes. IRQHandler, SharedIRQHandler & SpuriousInterruptHandler classes use a responsible IRQ controller directly instead of calling InterruptManagement for disable(), enable() or eoi(). Also, the initialization process of InterruptManagement is simplified, so it doesn't rely on an ACPI parser to be initialized.
2020-02-29Kernel: Initialize Spurious IRQ handlers in switch_to_pic_mode()Liav A
2020-02-29Kernel: Delete unnecessary register & unregister callsLiav A
2020-02-29Kernel: Add SpuriousInterruptHandler classLiav A
This type of interrupt handler should handle spurious IRQs.
2020-02-29Kernel: Add SpuriousInterruptHandler type into HandlerPurposeLiav A
2020-02-27IOAPIC: Use dbg() instead of dbgprintf()Liav A
2020-02-24Kernel: Don't use references or pointers to physical addressesLiav A
Now the ACPI & PCI code is more safer, because we don't use raw pointers or references to objects or data that are located in the physical address space, so an accidental dereference cannot happen easily. Instead, we use the PhysicalAddress class to represent those addresses.
2020-02-24Kernel: Change get_sharing_devices_count() in GenericInterruptHandlerLiav A
The new method' name is sharing_devices_count(). The Serenity Coding Style tends to not accept the word "get" in methods' names if possible.
2020-02-24Kernel: Add the new APIC namespaceLiav A
Also, the enable() function is now correct and will use the right registers and values. In addition to that, write_register() and read_registers() are not relying on identity mapping anymore.
2020-02-24Kernel: Add MSIHandler classLiav A
This is a stub for now, since we don't support Message Signaled Interrupts yet.
2020-02-24Kernel: Add UnhandledInterruptHandler classLiav A
This class will be used to represent an IRQ vector handler that wasn't assigned to any IRQ Handler.
2020-02-24Kernel: Add SharedIRQHandler classLiav A
This class represents a shared interrupt handler. This class will not be created automatically but only if two IRQ Handlers are sharing the same IRQ number.
2020-02-24Kernel: Add new IRQHandler classLiav A
This class will replace the old IRQHandler class later.
2020-02-24Kernel: Add Interrupt Management and Generic Interrupt HandlerLiav A
The GenericInterruptHandler class will be used to represent an abstract interrupt handler. The InterruptManagement class will represent a centralized component to manage interrupts.
2020-02-24Kernel: Add the IOAPIC classLiav A
This class inherits from IRQController class, and represents the 82093AA IOAPIC chip.
2020-02-24Kernel: Add the PIC classLiav A
This class inherits from IRQController class, and represents the common Intel 8259 PIC chip.
2020-02-24Kernel: Add IRQController classLiav A
This class is an abstraction layer for different IRQ controllers that are present in a typical system.