ladybird/Kernel/Arch/InterruptDisabler.h
Timon Kruiper a4534678f9 Kernel: Implement InterruptDisabler using generic Processor functions
Now that the code does not use architectural specific code, it is moved
to the generic Arch directory and the paths are modified accordingly.
2022-06-02 13:14:12 +01:00

32 lines
563 B
C++

/*
* Copyright (c) 2022, Timon Kruiper <timonkruiper@gmail.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/Types.h>
#include <Kernel/Arch/Processor.h>
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;
};
}