diff --git a/Kernel/Arch/InterruptDisabler.h b/Kernel/Arch/InterruptDisabler.h new file mode 100644 index 00000000000..d4e49bb9b4b --- /dev/null +++ b/Kernel/Arch/InterruptDisabler.h @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2022, Timon Kruiper + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include +#include + +namespace Kernel { + +class InterruptDisabler { +public: + InterruptDisabler() + : m_interrupts_were_enabled(Processor::are_interrupts_enabled()) + { + Processor::disable_interrupts(); + } + + ~InterruptDisabler() + { + if (m_interrupts_were_enabled) + Processor::enable_interrupts(); + } + +private: + bool m_interrupts_were_enabled; +}; + +} diff --git a/Kernel/Arch/x86/InterruptDisabler.h b/Kernel/Arch/x86/InterruptDisabler.h deleted file mode 100644 index 941ddaab2b5..00000000000 --- a/Kernel/Arch/x86/InterruptDisabler.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2018-2021, Andreas Kling - * - * SPDX-License-Identifier: BSD-2-Clause - */ - -#pragma once - -#include - -#include - -#include - -#include -VALIDATE_IS_X86() - -namespace Kernel { - -class InterruptDisabler { -public: - InterruptDisabler() - { - m_flags = cpu_flags(); - cli(); - } - - ~InterruptDisabler() - { - if ((m_flags & 0x200) != 0) - sti(); - } - -private: - u32 m_flags; -}; - -} diff --git a/Kernel/Arch/x86/common/Processor.cpp b/Kernel/Arch/x86/common/Processor.cpp index 7e2e2800adf..632d24e2b94 100644 --- a/Kernel/Arch/x86/common/Processor.cpp +++ b/Kernel/Arch/x86/common/Processor.cpp @@ -19,12 +19,12 @@ #include #include +#include #include #include #include #include #include -#include #include #include #include diff --git a/Kernel/Arch/x86/common/TrapFrame.cpp b/Kernel/Arch/x86/common/TrapFrame.cpp index 9e3054c6787..2262840d1cd 100644 --- a/Kernel/Arch/x86/common/TrapFrame.cpp +++ b/Kernel/Arch/x86/common/TrapFrame.cpp @@ -4,8 +4,8 @@ * SPDX-License-Identifier: BSD-2-Clause */ +#include #include -#include #include namespace Kernel { diff --git a/Kernel/DoubleBuffer.cpp b/Kernel/DoubleBuffer.cpp index 498bf0f538e..cc921ef7bb6 100644 --- a/Kernel/DoubleBuffer.cpp +++ b/Kernel/DoubleBuffer.cpp @@ -5,7 +5,7 @@ */ #include -#include +#include #include namespace Kernel { diff --git a/Kernel/FileSystem/FileSystem.cpp b/Kernel/FileSystem/FileSystem.cpp index 368d924425f..96d19bef439 100644 --- a/Kernel/FileSystem/FileSystem.cpp +++ b/Kernel/FileSystem/FileSystem.cpp @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/Kernel/Firmware/ACPI/Parser.cpp b/Kernel/Firmware/ACPI/Parser.cpp index 41ebbecd12a..406275bffb5 100644 --- a/Kernel/Firmware/ACPI/Parser.cpp +++ b/Kernel/Firmware/ACPI/Parser.cpp @@ -9,8 +9,8 @@ #include #include #include +#include #include -#include #include #include #include diff --git a/Kernel/Firmware/Hypervisor/VMWareBackdoor.cpp b/Kernel/Firmware/Hypervisor/VMWareBackdoor.cpp index 5df1b8d61d3..b1b78ed5850 100644 --- a/Kernel/Firmware/Hypervisor/VMWareBackdoor.cpp +++ b/Kernel/Firmware/Hypervisor/VMWareBackdoor.cpp @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/Kernel/GlobalProcessExposed.cpp b/Kernel/GlobalProcessExposed.cpp index 025b3ea8be3..91288c4531e 100644 --- a/Kernel/GlobalProcessExposed.cpp +++ b/Kernel/GlobalProcessExposed.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/Kernel/Interrupts/IOAPIC.cpp b/Kernel/Interrupts/IOAPIC.cpp index f17be743826..0b75722bfde 100644 --- a/Kernel/Interrupts/IOAPIC.cpp +++ b/Kernel/Interrupts/IOAPIC.cpp @@ -5,7 +5,7 @@ */ #include -#include +#include #include #include #include diff --git a/Kernel/Interrupts/IRQHandler.cpp b/Kernel/Interrupts/IRQHandler.cpp index d73ccc94cdf..86e53a3404e 100644 --- a/Kernel/Interrupts/IRQHandler.cpp +++ b/Kernel/Interrupts/IRQHandler.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include #include #include diff --git a/Kernel/Interrupts/InterruptManagement.cpp b/Kernel/Interrupts/InterruptManagement.cpp index c7570f3f34a..a63f90d94b6 100644 --- a/Kernel/Interrupts/InterruptManagement.cpp +++ b/Kernel/Interrupts/InterruptManagement.cpp @@ -6,8 +6,8 @@ #include #include +#include #include -#include #include #include #include diff --git a/Kernel/Interrupts/PIC.cpp b/Kernel/Interrupts/PIC.cpp index 906cdc20188..002e6fbbd87 100644 --- a/Kernel/Interrupts/PIC.cpp +++ b/Kernel/Interrupts/PIC.cpp @@ -6,8 +6,8 @@ #include #include +#include #include -#include #include #include #include diff --git a/Kernel/Memory/ScopedAddressSpaceSwitcher.cpp b/Kernel/Memory/ScopedAddressSpaceSwitcher.cpp index f007141a687..146d37b2b91 100644 --- a/Kernel/Memory/ScopedAddressSpaceSwitcher.cpp +++ b/Kernel/Memory/ScopedAddressSpaceSwitcher.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include #include diff --git a/Kernel/Net/NetworkAdapter.cpp b/Kernel/Net/NetworkAdapter.cpp index cbc16764a90..c5860813dc7 100644 --- a/Kernel/Net/NetworkAdapter.cpp +++ b/Kernel/Net/NetworkAdapter.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include #include #include diff --git a/Kernel/Process.cpp b/Kernel/Process.cpp index 0b60ae622d4..e7093238217 100644 --- a/Kernel/Process.cpp +++ b/Kernel/Process.cpp @@ -9,7 +9,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/Kernel/ProcessSpecificExposed.cpp b/Kernel/ProcessSpecificExposed.cpp index 653f1c786a4..5f9c9399d40 100644 --- a/Kernel/ProcessSpecificExposed.cpp +++ b/Kernel/ProcessSpecificExposed.cpp @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/Kernel/Scheduler.cpp b/Kernel/Scheduler.cpp index 96950860040..7159e45fef8 100644 --- a/Kernel/Scheduler.cpp +++ b/Kernel/Scheduler.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/Kernel/Syscalls/kill.cpp b/Kernel/Syscalls/kill.cpp index 66067584e5d..58c3409b5d9 100644 --- a/Kernel/Syscalls/kill.cpp +++ b/Kernel/Syscalls/kill.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include namespace Kernel { diff --git a/Kernel/Syscalls/setpgid.cpp b/Kernel/Syscalls/setpgid.cpp index 9d3f58e13d7..d2976c9aa57 100644 --- a/Kernel/Syscalls/setpgid.cpp +++ b/Kernel/Syscalls/setpgid.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include #include diff --git a/Kernel/Syscalls/sigaction.cpp b/Kernel/Syscalls/sigaction.cpp index 38c5cd19ffa..c5a94d27c13 100644 --- a/Kernel/Syscalls/sigaction.cpp +++ b/Kernel/Syscalls/sigaction.cpp @@ -5,8 +5,8 @@ * SPDX-License-Identifier: BSD-2-Clause */ +#include #include -#include #include namespace Kernel { diff --git a/Kernel/TTY/MasterPTY.cpp b/Kernel/TTY/MasterPTY.cpp index 6c27d348eea..4739e644e7c 100644 --- a/Kernel/TTY/MasterPTY.cpp +++ b/Kernel/TTY/MasterPTY.cpp @@ -5,7 +5,7 @@ */ #include -#include +#include #include #include #include diff --git a/Kernel/TTY/TTY.cpp b/Kernel/TTY/TTY.cpp index 77bb9ed645d..c8f0b689991 100644 --- a/Kernel/TTY/TTY.cpp +++ b/Kernel/TTY/TTY.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/Kernel/Thread.cpp b/Kernel/Thread.cpp index b168ea4c6bc..5c1306b4777 100644 --- a/Kernel/Thread.cpp +++ b/Kernel/Thread.cpp @@ -9,8 +9,8 @@ #include #include #include +#include #include -#include #include #include #include diff --git a/Kernel/Time/HPETComparator.cpp b/Kernel/Time/HPETComparator.cpp index ce95a93fbfa..7cdefd17062 100644 --- a/Kernel/Time/HPETComparator.cpp +++ b/Kernel/Time/HPETComparator.cpp @@ -4,7 +4,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ -#include +#include #include #include #include diff --git a/Kernel/Time/PIT.cpp b/Kernel/Time/PIT.cpp index 455a77240e5..f435e23b5cf 100644 --- a/Kernel/Time/PIT.cpp +++ b/Kernel/Time/PIT.cpp @@ -4,8 +4,8 @@ * SPDX-License-Identifier: BSD-2-Clause */ +#include #include -#include #include #include #include diff --git a/Kernel/Time/RTC.cpp b/Kernel/Time/RTC.cpp index f8b7a690bb0..59de79808e7 100644 --- a/Kernel/Time/RTC.cpp +++ b/Kernel/Time/RTC.cpp @@ -4,8 +4,8 @@ * SPDX-License-Identifier: BSD-2-Clause */ +#include #include -#include #include #include #include diff --git a/Kernel/Time/TimeManagement.cpp b/Kernel/Time/TimeManagement.cpp index 811cd7a4efc..18d42d6d959 100644 --- a/Kernel/Time/TimeManagement.cpp +++ b/Kernel/Time/TimeManagement.cpp @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include #include