Tibor Nagy
0086daf9b0
LibGUI: Scroll selected treeview entries into view
2020-02-24 15:12:47 +01:00
Andreas Kling
cb9d9846e0
Kernel: Fail with ENOMEM if there's insufficient VM for a SharedBuffer
2020-02-24 13:33:10 +01:00
Andreas Kling
30a8991dbf
Kernel: Make Region weakable and use WeakPtr<Region> instead of Region*
...
This turns use-after-free bugs into null pointer dereferences instead.
2020-02-24 13:32:45 +01:00
Andreas Kling
79576f9280
Kernel: Clear the region lookup cache on exec()
...
Each process has a 1-level lookup cache for fast repeated lookups of
the same VM region (which tends to be the majority of lookups.)
The cache is used by the following syscalls: munmap, madvise, mprotect
and set_mmap_name.
After a succesful exec(), there could be a stale Region* in the lookup
cache, and the new executable was able to manipulate it using a number
of use-after-free code paths.
2020-02-24 12:37:27 +01:00
Liav A
5ce6215af7
ACPI: Don't set Smart Pointers to be nullptr
...
Instead of setting the smart pointers to be nullptr in the
initializer list, it's done automatically by OwnPtr.
2020-02-24 11:27:03 +01:00
Liav A
85307dd26e
Kernel: Don't use references or pointers to physical addresses
...
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-24 11:27:03 +01:00
Liav A
43d570a1e3
AK: Add offset_in_page() method in PhysicalAddress class
...
This method is useful for later usage.
2020-02-24 11:27:03 +01:00
Liav A
fe664965c2
Kernel: Change get_sharing_devices_count() in GenericInterruptHandler
...
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-24 11:27:03 +01:00
Liav A
a7d7c0e60c
Kernel: Change get_pci_address() to pci_address() in PCI::Device class
...
The Serenity Coding Style tends to not accept the word "get" in
methods' names if possible.
2020-02-24 11:27:03 +01:00
Liav A
d51c81f475
Userland: Add a utility for viewing interrupts from ProcFS
2020-02-24 11:27:03 +01:00
Liav A
80eea6cd8b
Kernel: Create an entry for viewing interrupts in ProcFS
2020-02-24 11:27:03 +01:00
Liav A
e3b24d0478
Kernel: Delete unused files
2020-02-24 11:27:03 +01:00
Liav A
36eea5fa60
Build: Update the Kernel makefile to build the latest changes
2020-02-24 11:27:03 +01:00
Liav A
4448597c64
Kernel: Update the init stage to use all the latest changes
...
gdt_init() and idt_init() will be invoked earlier in the boot process.
Also, setup_interrupts() will be called to setup the interrupt mode.
2020-02-24 11:27:03 +01:00
Liav A
bb73802b15
CPU: Use the new interrupt components
...
Now we use the GenericInterruptHandler class instead of IRQHandler in
the CPU functions.
This commit adds an include to the ISR stub macros header file.
Also, this commit adds support for IRQ sharing, so when an IRQHandler
will try to register to already-assigned IRQ number, a SharedIRQHandler
will be created to register both IRQHandlers.
2020-02-24 11:27:03 +01:00
Liav A
9e66eb160c
Kernel: Add the new APIC namespace
...
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-24 11:27:03 +01:00
Liav A
71371d39b3
CPU: Add 2 files with ISR stub macros
2020-02-24 11:27:03 +01:00
Liav A
c51a57fb32
Kernel: Update SB16 driver to use the new IRQHandler class
...
Also, add methods to allow changing of IRQ line in the SB16 card.
2020-02-24 11:27:03 +01:00
Liav A
895e874eb4
Kernel: Include the new PIT class in system components
2020-02-24 11:27:03 +01:00
Liav A
b3c132ffb7
Kernel: Update PATAChannel implementation to use the PIT class
...
Also, update the class implementation to use PCI::Device class
accordingly.
The create() helper will now search for an IDE controller in the
PCI bus, allowing to simplify the initialize() method.
2020-02-24 11:27:03 +01:00
Liav A
83aa868c17
Kernel: Update PATAChannel class to use the PCI::Device class
...
PATAChannel class will inherit from the PCI::Device class, thus,
can still implement IRQ handling.
2020-02-24 11:27:03 +01:00
Liav A
12dbb7ca49
Kernel: Add MSIHandler class
...
This is a stub for now, since we don't support Message Signaled
Interrupts yet.
2020-02-24 11:27:03 +01:00
Liav A
9d281b4b15
Kernel: Add UnhandledInterruptHandler class
...
This class will be used to represent an IRQ vector handler that wasn't
assigned to any IRQ Handler.
2020-02-24 11:27:03 +01:00
Liav A
9587f2d3ee
Kernel: Add SharedIRQHandler class
...
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-24 11:27:03 +01:00
Liav A
740534cd67
Kernel: Update system components to use the new IRQHandler class
2020-02-24 11:27:03 +01:00
Liav A
a46120b4a8
ACPI: Run clang-format on the definitions file
2020-02-24 11:27:03 +01:00
Liav A
16055de978
Kernel: Introduce the PIT class
...
The PIT class inherits from HardwareTimer class, and is replacing
the PIT namespace.
2020-02-24 11:27:03 +01:00
Liav A
d83a3eff1f
Kernel: Update Network adapter classes to use the PCI::Device class
...
Those classes will inherit from the PCI::Device class, thus,
they can still implement IRQ handling.
2020-02-24 11:27:03 +01:00
Liav A
73a7e5875e
Kernel: Update PCI::Device class to use the new IRQHandler class
2020-02-24 11:27:03 +01:00
Liav A
ea1251d465
Kernel: Add HardwareTimer class
...
This is an abstraction layer for future hardware timers
that will be implemented.
2020-02-24 11:27:03 +01:00
Liav A
dd7522bdb2
Kernel: Add new IRQHandler class
...
This class will replace the old IRQHandler class later.
2020-02-24 11:27:03 +01:00
Liav A
b201b23363
Kernel: Add Interrupt Management and Generic Interrupt Handler
...
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-24 11:27:03 +01:00
Liav A
ebe30ed11e
ACPI: Adding definitions for HPET
...
Also, definitions were added for MADT entries, like IOAPIC and GSI
overriding information.
2020-02-24 11:27:03 +01:00
Liav A
e760ebcacb
Kernel: Add the IOAPIC class
...
This class inherits from IRQController class, and represents
the 82093AA IOAPIC chip.
2020-02-24 11:27:03 +01:00
Liav A
7d59a67504
Kernel: Add the PIC class
...
This class inherits from IRQController class, and represents
the common Intel 8259 PIC chip.
2020-02-24 11:27:03 +01:00
Liav A
b56afbea17
Kernel: Add IRQController class
...
This class is an abstraction layer for different IRQ controllers
that are present in a typical system.
2020-02-24 11:27:03 +01:00
Liav A
35f27231b3
Kernel: Fix a wrong debug message in ACPIStaticParser
2020-02-24 11:27:03 +01:00
Liav A
3539666ac9
Kernel: Add PCI helpers to enable and disable the interrupt line
2020-02-24 11:27:03 +01:00
Liav A
ca05d54b2b
Kernel: Add MultiProcessor Parser
2020-02-24 11:27:03 +01:00
Tibor Nagy
5f913c67d9
LibGUI: Implement keyboard and mouse wheel events for SpinBox
2020-02-24 10:40:32 +01:00
Andreas Kling
17846dd063
AK: Zero-initialize the internal storage of Optional
2020-02-24 10:22:27 +01:00
Andreas Kling
0763f67043
AK: Make Bitmap use size_t for its size
...
Also rework its API's to return Optional<size_t> instead of int with -1
as the error value.
2020-02-24 09:56:07 +01:00
Andreas Kling
b813b2f871
AK: Make HashTable and HashMap use size_t for size and capacity
2020-02-24 09:42:52 +01:00
Andreas Kling
3252a6925e
LibGUI: Fix silly nullptr dereference in MessageBox::show()
...
Since we take the parent object as a raw pointer, we should handle the
case where it's null.
2020-02-24 09:15:51 +01:00
thatlittlegit
525f8df5b8
SystemMenu: Migrate PowerDialog to (widget)->add like in 3d20da9e
...
This also fixes the build.
2020-02-23 22:03:03 +01:00
thatlittlegit
ab9e5755ba
Userland+Kernel: Set shutdown/reboot to only be run by the phys
group
2020-02-23 22:03:03 +01:00
thatlittlegit
30556a0a93
SystemMenu: Move SystemDialog into SystemMenu and remove INI config
...
I probably would've done INI config removal in another commit, but it
fit well here because I didn't want to pledge wpath for SystemMenu if I
didn't need to.
Frankly, that's something that I think should be done: allow ConfigFile
to be used read-only.
2020-02-23 22:03:03 +01:00
thatlittlegit
9784ab99d2
SystemDialog+Base: Add icon for SystemDialog
2020-02-23 22:03:03 +01:00
thatlittlegit
ba6a290f4f
SystemMenu: Remove --shutdown argument when calling SystemDialog
2020-02-23 22:03:03 +01:00
thatlittlegit
efc4861786
SystemDialog: Revamp to be more Win95-like
...
Only thing I don't like right now is the fact that we rely on the shell.
2020-02-23 22:03:03 +01:00