KizarmProbe.
 Vše Třídy Soubory Funkce Proměnné Výčty Hodnoty výčtu Definice maker Skupiny Stránky
locker.h
Zobrazit dokumentaci tohoto souboru.
1 #ifndef LOCKER_H
2 #define LOCKER_H
3 
17 extern volatile int gblMutex;
18 static const unsigned LockerChunk = 0x80;
19 static const unsigned LockerLimit = 0x8000;
20 class Locker {
21 
22  public:
24  Locker () { cnt = 0; max = LockerChunk; };
26  void Fini (void) {};
28  void lock (void) {
29  asm volatile ("cpsid i");
30  gblMutex++;
31  };
33  void unlock (void) {
34  if (--gblMutex) return;
35  asm volatile ("cpsie i");
36  };
37  void Reset (void) {
38  max = LockerChunk;
39  };
41  bool NotDone (void) {
42  if (cnt++ < max) return true;
43  cnt = 0;
44  // Saturate max
45  if (max > LockerLimit) return false;
46  max += LockerChunk;
47  return false;
48  };
49  private: // ve fw nic
50  unsigned cnt;
51  unsigned max;
52 };
53 
54 #endif // LOCKER_H
Definition: locker.h:20
Locker()
Konstruktor.
Definition: locker.h:24
volatile int gblMutex
Zamykání a odemykání vlákna.
Definition: main.cpp:4
void unlock(void)
Odemčení
Definition: locker.h:33
void lock(void)
Uzamčení
Definition: locker.h:28
bool NotDone(void)
prodlouzeni smycky
Definition: locker.h:41
void Fini(void)
Místo destruktoru.
Definition: locker.h:26