Kernel: Disable interrupts for aarch64 in WorkQueue's main loop

This code expects to be executed with interrupts disabled, however we
currently spawn (kernel) threads with interrupts enabled on aarch64.
This commit is contained in:
Timon Kruiper 2023-02-22 23:49:34 +01:00 committed by Andrew Kaster
parent 05b9eb7feb
commit aa40cef2b7
Notes: sideshowbarker 2024-07-17 02:37:08 +09:00

View file

@ -5,6 +5,7 @@
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <Kernel/Arch/Processor.h>
#include <Kernel/Process.h>
#include <Kernel/Sections.h>
#include <Kernel/WaitQueue.h>
@ -28,6 +29,13 @@ UNMAP_AFTER_INIT WorkQueue::WorkQueue(StringView name)
if (name_kstring.is_error())
TODO();
(void)Process::create_kernel_process(thread, name_kstring.release_value(), [this] {
#if ARCH(AARCH64)
// FIXME: This function expects to be executed with interrupts disabled, however on
// aarch64 we spawn (kernel) threads with interrupts enabled, so we need to disable them.
// This code should be written in a way that it is able to be executed with interrupts enabled.
Processor::disable_interrupts();
#endif
for (;;) {
WorkItem* item;
bool have_more;