Line data Source code
1 : // Copyright 2024 Accenture.
2 :
3 : #pragma once
4 :
5 : #include "interrupts/suspendResumeAllInterrupts.h"
6 :
7 : namespace interrupts
8 : {
9 : class SuspendResumeAllInterruptsLock
10 : {
11 : public:
12 : // [PUBLICAPI_START]
13 : /**
14 : * Suspend all interrupts and store previous state in an class internal variable
15 : */
16 1 : void suspend()
17 : {
18 1 : fOldMachineStateRegisterValue = getMachineStateRegisterValueAndSuspendAllInterrupts();
19 1 : }
20 :
21 : /**
22 : * Resume all interrupts restoring the interrupt state that has been saved during the suspend()
23 : * call from the class internal variable
24 : */
25 1 : void resume() { resumeAllInterrupts(fOldMachineStateRegisterValue); }
26 :
27 : // [PUBLICAPI_END]
28 :
29 : private:
30 : uint32_t fOldMachineStateRegisterValue{};
31 : };
32 :
33 : } /* namespace interrupts */
|