dae52b8d55fbd1521b9fcb783990bab61d8545be
[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 numprefetchsites;
8 void handle();
9 extern pfcstats_t *evalPrefetch;
10
11 void transStatsHandler(int sig, siginfo_t* info, void *context) {
12 #ifdef TRANSSTATS
13   printf("******  Transaction Stats   ******\n");
14   printf("numTransAbort = %d\n", numTransAbort);
15   printf("numTransCommit = %d\n", numTransCommit);
16   int i;
17   for(i=0; i<numprefetchsites; i++) {
18     printf("siteid = %d,  callCount = %d\n", i, evalPrefetch[i].callcount);
19   }
20   exit(0);
21 #endif
22 }
23
24 void handle() {
25 #ifdef TRANSSTATS
26   struct sigaction siga;
27   siga.sa_handler = NULL;
28   siga.sa_flags = SA_SIGINFO;
29   siga.sa_flags = 0;
30   siga.sa_sigaction = &transStatsHandler;
31   sigemptyset(&siga.sa_mask);
32   sigaction(SIGUSR1, &siga, 0);
33 #endif
34 }