Bug fixes, working code
[charm.git] / src / ck-core / ckfaultinjector.h
1 /** \file ckinjector.h
2     \brief This file contains declarations related to soft-error injection based
3     on user specified parameters.
4
5     Author - Nikhil Jain
6   */
7
8 #ifndef _CK_FAULTINJECTOR_H
9 #define _CK_FAULTINJECTOR_H
10
11 #include "converse.h"
12 #include <vector>
13
14 #define DEFAULT_FAULT_PERIOD 10 //in seconds
15
16 using namespace std;
17
18 typedef struct MemRegion {
19   void *start;
20   CmiUInt8 length; //in bytes
21
22   MemRegion(void *_start, CmiUInt8 _length) : start(_start), length(_length) {}
23
24 } MemRegion;
25
26 typedef struct FaultInjector {
27   std::vector<MemRegion> userZones;
28   int fault_period; //in seconds
29   int inject;       //whether to inject
30   int injected;     //is call back set for injection?
31
32   FaultInjector(char **argv);
33
34   int registerRegion(void *_start, CmiUInt8 _length);
35   void deregisterRegion(void *_start);
36   void deregisterIndex(int index);
37
38   void setPeriod(int _fp) { fault_period = _fp; }
39   int getPeriod() { return fault_period; }
40
41   void startInjection();
42   void stopInjection() { inject = 0; }
43
44   void injectFault();
45 } FaultInjector;
46
47 extern "C" {
48   void init_FI(char **argv);
49   int FI_registerRegion(void *_start, CmiUInt8 _length);
50   void FI_deregisterRegion(void* _start);
51   void FI_deregisterIndex(int index);
52   void FI_setPeriod(int _fp);
53   int FI_getPeriod();
54   void FI_startInjection();
55   void FI_stopInjection(); 
56   void FI_injectFault();
57 }
58
59
60 #endif // _CK_FAULTINJECTOR_H