EE445M RTOS
Taken at the University of Texas Spring 2015
criticalpp.hpp
Go to the documentation of this file.
1 #ifndef __criticalpp__
2 #define __criticalpp__
3 
4 #include <stdint.h>
5 #include <stdbool.h>
6 
7 class critical {
8 public:
9  uint32_t StartCritical(void) {
10  asm("MRS R0, PRIMASK ;// save old status\n");
11  asm("CPSID I ;// mask all (except faults)\n");
12  }
13 
14  void EndCritical(uint32_t primask) {
15  asm("MSR PRIMASK, R0\n");
16  }
17 
18  static uint32_t static_StartCritical(void) {
19  asm("MRS R0, PRIMASK ;// save old status\n");
20  asm("CPSID I ;// mask all (except faults)\n");
21  }
22 
23  static void static_EndCritical(uint32_t primask) {
24  asm("MSR PRIMASK, R0\n");
25  }
26 };
27 
28 #endif
29 
30 /* Local Variables: */
31 /* firestarter: (compile "make -k -j32 -C ~/workspace/ee445m-labs/build/") */
32 /* End: */
void EndCritical(uint32_t primask)
Definition: criticalpp.hpp:14
uint32_t StartCritical(void)
Definition: criticalpp.hpp:9
static void static_EndCritical(uint32_t primask)
Definition: criticalpp.hpp:23
static uint32_t static_StartCritical(void)
Definition: criticalpp.hpp:18