Add conditional acquisition parameter to RAII guard classes
All checks were successful
Builds / ExectOS (i686, debug) (push) Successful in 31s
Builds / ExectOS (amd64, debug) (push) Successful in 34s
Builds / ExectOS (amd64, release) (push) Successful in 58s
Builds / ExectOS (i686, release) (push) Successful in 55s

This commit is contained in:
2026-06-06 17:26:39 +02:00
parent f680830b53
commit cf25af23d1
2 changed files with 48 additions and 12 deletions

View File

@@ -27,17 +27,26 @@ namespace KE
{
private:
KRUNLEVEL PreviousRunLevel;
BOOLEAN Switched;
public:
LowerRunLevel(KRUNLEVEL RunLevel)
LowerRunLevel(IN KRUNLEVEL RunLevel,
IN BOOLEAN ChangeLevel = TRUE)
{
PreviousRunLevel = KE::RunLevel::GetCurrentRunLevel();
KE::RunLevel::LowerRunLevel(RunLevel);
Switched = ChangeLevel;
if(Switched)
{
KE::RunLevel::LowerRunLevel(RunLevel);
}
}
~LowerRunLevel()
{
KE::RunLevel::RaiseRunLevel(PreviousRunLevel);
if(Switched)
{
KE::RunLevel::RaiseRunLevel(PreviousRunLevel);
}
}
LowerRunLevel(const LowerRunLevel&) = delete;
@@ -48,17 +57,26 @@ namespace KE
{
private:
KRUNLEVEL PreviousRunLevel;
BOOLEAN Switched;
public:
RaiseRunLevel(KRUNLEVEL RunLevel)
RaiseRunLevel(IN KRUNLEVEL RunLevel,
IN BOOLEAN ChangeLevel = TRUE)
{
PreviousRunLevel = KE::RunLevel::GetCurrentRunLevel();
KE::RunLevel::RaiseRunLevel(RunLevel);
Switched = ChangeLevel;
if(Switched)
{
KE::RunLevel::RaiseRunLevel(RunLevel);
}
}
~RaiseRunLevel()
{
KE::RunLevel::LowerRunLevel(PreviousRunLevel);
if(Switched)
{
KE::RunLevel::LowerRunLevel(PreviousRunLevel);
}
}
RaiseRunLevel(const RaiseRunLevel&) = delete;