062e8a0f1d2e922c4c0ebb47230e7ba49221ec0d
[IRC.git] / Robust / src / Runtime / DSTM / interface / signal.c
1 #include "dstm.h"
2 #include <signal.h>
3
4 extern int numTransAbort;
5 extern int numTransCommit;
6 extern int numprefetchsites;
7 void handle();
8 extern pfcstats_t *evalPrefetch;
9
10 void transStatsHandler(int sig, siginfo_t* info, void *context) {
11 #ifdef TRANSSTATS
12   printf("******  Transaction Stats   ******\n");
13   printf("numTransAbort = %d\n", numTransAbort);
14   printf("numTransCommit = %d\n", numTransCommit);
15   int i;
16   for(i=0; i<numprefetchsites; i++) {
17     printf("siteid = %d,  callCount = %d\n", i, evalPrefetch[i].callcount);
18   }
19   exit(0);
20 #endif
21 }
22
23 void handle() {
24 #ifdef TRANSSTATS
25   struct sigaction siga;
26   siga.sa_handler = NULL;
27   siga.sa_flags = SA_SIGINFO;
28   siga.sa_flags = 0;
29   siga.sa_sigaction = &transStatsHandler;
30   sigemptyset(&siga.sa_mask);
31   sigaction(SIGUSR1, &siga, 0);
32 #endif
33 }