adding a test case
[IRC.git] / Robust / src / Runtime / DSTM / interface / sandbox.h
1 #ifndef SANDBOX_H
2 #define SANDBOX_H
3
4 #include <setjmp.h>
5 #include <signal.h>
6 #include "dstm.h"
7 #include "altmlookup.h"
8 #include <execinfo.h>
9 #include "readstruct.h"
10 #include "dsmlock.h"
11
12 extern __thread chashlistnode_t *c_table;
13 extern __thread unsigned int c_size;
14 extern __thread unsigned int c_numelements;
15 extern __thread jmp_buf aborttrans;
16 extern __thread int abortenabled;
17 extern __thread int* counter_reset_pointer;
18 extern __thread int transaction_check_counter;
19 extern __thread int trans_allocation_bytes;
20
21 /* Global Variables */
22 #define CHECK_OBJECTS   51
23 #define OBJ_INCONSISTENT 52
24 #define OBJ_CONSISTENT 53
25 #define LOW_CHECK_FREQUENCY 1000000
26 #define HIGH_CHECK_FREQUENCY 100000
27 int numNode; //variable to keep track of the length of the linked list of objects
28
29 typedef struct elem {
30   unsigned int oid;
31   unsigned short version;
32 } elem_t;
33
34 typedef struct nodeElem {
35   unsigned int mid;
36   unsigned int numread;
37   unsigned int nummod;
38   elem_t *objread;
39   elem_t *objmod;
40   struct nodeElem *next;
41 } nodeElem_t;
42
43 typedef struct objData {
44   char control;
45   unsigned int numread;
46   unsigned int nummod;
47 } objData_t;
48
49
50 int checktrans();
51 void errorhandler(int sig, struct sigcontext ctx);
52 nodeElem_t * makehead(unsigned int numelements);
53 void deletehead(nodeElem_t *head);
54 nodeElem_t * createList(nodeElem_t *, objheader_t *, unsigned int, unsigned int);
55 int verify(nodeElem_t *pile);
56 void print_trace();
57 void checkObjVersion(struct readstruct*, int, unsigned int, unsigned int);
58
59 #endif