Using Watchdog » watchdog.h
| 1 |
#include <semaphore.h>
|
|---|---|
| 2 |
|
| 3 |
namespace MityDSP { |
| 4 |
|
| 5 |
/**
|
| 6 |
* The tcWatchdog class provides a simple abstraction for the linux
|
| 7 |
* watchdog device management. Typical use pattern:
|
| 8 |
*
|
| 9 |
* @code {
|
| 10 |
*
|
| 11 |
* tcWatchdog* pW = new tcWatchdog();
|
| 12 |
* int handle = pW->RegisterCheckpoint();
|
| 13 |
* pW->StartWatchDog(10);
|
| 14 |
*
|
| 15 |
* while (!done)
|
| 16 |
* {
|
| 17 |
* /// do stuff
|
| 18 |
* pW->Checkin(handle);
|
| 19 |
* }
|
| 20 |
*
|
| 21 |
* delete pW;
|
| 22 |
*
|
| 23 |
* @code }
|
| 24 |
*/
|
| 25 |
class tcWatchdog |
| 26 |
{
|
| 27 |
public:
|
| 28 |
tcWatchdog(const char* apDevice = "/dev/watchdog"); |
| 29 |
virtual ~tcWatchdog(void); |
| 30 |
|
| 31 |
int StartWatchDog(int TimeoutSecs); |
| 32 |
|
| 33 |
int RegisterCheckpoint(void); |
| 34 |
|
| 35 |
int UnRegisterCheckpoint(int handle); |
| 36 |
|
| 37 |
int Checkin(int Checkpoint); |
| 38 |
|
| 39 |
protected:
|
| 40 |
volatile int mnMask; |
| 41 |
volatile int mnSet; |
| 42 |
sem_t mhSem; |
| 43 |
char* mpFileName; |
| 44 |
int mnFd; |
| 45 |
};
|
| 46 |
|
| 47 |
}
|