1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 01:57:45 +00:00

Kernel: Add an InterruptFlagSaver helper class.

This is useful instead of InterruptDisabler in some cases.
This commit is contained in:
Andreas Kling 2019-02-05 11:13:34 +01:00
parent cd1bbdf052
commit b782055b96
5 changed files with 28 additions and 18 deletions

View file

@ -106,6 +106,25 @@ inline bool are_interrupts_enabled()
return cpu_flags() & 0x200;
}
class InterruptFlagSaver {
public:
InterruptFlagSaver()
{
m_flags = cpu_flags();
}
~InterruptFlagSaver()
{
if (m_flags & 0x200)
sti();
else
cli();
}
private:
dword m_flags;
};
class InterruptDisabler {
public:
InterruptDisabler()
@ -120,16 +139,6 @@ public:
sti();
}
void temporarily_cli()
{
cli();
}
void temporarily_sti()
{
sti();
}
private:
dword m_flags;
};