9433e4fbe9bd4d28269d889807adabaff3c1cf87
[IRC.git] / Robust / src / Runtime / DSTM / interface / signal.c
1 #include "dstm.h"
2 #include "addPrefetchEnhance.h"
3 #include <signal.h>
4
5 extern int numTransAbort;
6 extern int numTransCommit;
7 extern int nchashSearch;
8 extern int nmhashSearch;
9 extern int nprehashSearch;
10 extern int nRemoteSend;
11 extern int nSoftAbort;
12 extern int numprefetchsites;
13 void handle();
14 extern pfcstats_t *evalPrefetch;
15
16 void transStatsHandler(int sig, siginfo_t* info, void *context) {
17 #ifdef TRANSSTATS
18   printf("******  Transaction Stats   ******\n");
19   printf("numTransAbort = %d\n", numTransAbort);
20   printf("numTransCommit = %d\n", numTransCommit);
21   printf("nchashSearch = %d\n", nchashSearch);
22   printf("nmhashSearch = %d\n", nmhashSearch);
23   printf("nprehashSearch = %d\n", nprehashSearch);
24   printf("nRemoteReadSend = %d\n", nRemoteSend);
25   printf("nSoftAbort = %d\n", nSoftAbort);
26   //TODO Remove later
27   /*
28      int i;
29      for(i=0; i<numprefetchsites; i++) {
30      printf("siteid = %d,  callCount = %d\n", i, evalPrefetch[i].callcount);
31      }
32    */
33   exit(0);
34 #endif
35 }
36
37 void handle() {
38 #ifdef TRANSSTATS
39   struct sigaction siga;
40   siga.sa_handler = NULL;
41   siga.sa_flags = SA_SIGINFO;
42   siga.sa_flags = 0;
43   siga.sa_sigaction = &transStatsHandler;
44   sigemptyset(&siga.sa_mask);
45   sigaction(SIGUSR1, &siga, 0);
46 #endif
47 }