new option for alex
authorbdemsky <bdemsky>
Wed, 19 Nov 2008 07:09:41 +0000 (07:09 +0000)
committerbdemsky <bdemsky>
Wed, 19 Nov 2008 07:09:41 +0000 (07:09 +0000)
Robust/src/Runtime/multicoreruntime.c
Robust/src/Runtime/option.c
Robust/src/Runtime/runtime.c
Robust/src/Runtime/task.c

index beb82573a8666bfa8102235692f9bc22fa43c8b2..fef5a41373cde5cd108b04cc20ce86b753b071a3 100644 (file)
@@ -18,6 +18,7 @@ char *options;
 int injectfailures=0;
 float failurechance=0;
 int debugtask=0;
+int errors=0;
 int injectinstructionfailures;
 int failurecount;
 float instfailurechance=0;
index 1d673874d1be5d2ffe0acfe3670b2f300d25325c..6b93254f3c80e00d23bf6bfb9da22e3700e2b48b 100644 (file)
@@ -9,6 +9,7 @@ extern char *options;
 extern int injectfailures;
 extern float failurechance;
 extern int debugtask;
+extern int errors;
 extern int injectinstructionfailures;
 extern int failurecount;
 extern float instfailurechance;
@@ -69,6 +70,11 @@ void processOptions() {
       if (options!=NULL) options++;
       debugtask=1;
       printf("Debug task option on.\n");
+    } else if (strncmp(options, "-errors",sizeof("-errors")-1)==0) {
+      options=strchr(options,' ');
+      if (options!=NULL) options++;
+      errors=1;
+      printf("Errors on.\n");
     } else if (strncmp(options, "-initializerandom", sizeof("-initializerandom")-1)==0) {
       options=strchr(options,' ');
       if (options!=NULL) options++;
index ead07d04e46893c9e19aaeeb303429b31803c8c5..836856cc459eb23da0981bea05d812168a5fe57d 100644 (file)
@@ -18,6 +18,7 @@ int instructioncount;
 char *options;
 int injectfailures=0;
 float failurechance=0;
+int errors=0;
 int debugtask=0;
 int injectinstructionfailures;
 int failurecount;
index 5f693ef32c5a62864e6f8130c9ccdedb4ff504b0..229e66f758921d18d3dba5ed179fd476f87f3f04 100644 (file)
@@ -16,6 +16,7 @@ extern int injectfailures;
 extern float failurechance;
 extern int debugtask;
 extern int instaccum;
+extern int errors;
 
 #ifdef CONSCHECK
 #include "instrument.h"
@@ -1033,10 +1034,12 @@ void executetasks() {
   sigemptyset(&sig.sa_mask);
 
   /* Catch bus errors, segmentation faults, and floating point exceptions*/
-  sigaction(SIGBUS,&sig,0);
-  sigaction(SIGSEGV,&sig,0);
-  sigaction(SIGFPE,&sig,0);
-  sigaction(SIGPIPE,&sig,0);
+  if (!errors) {
+    sigaction(SIGBUS,&sig,0);
+    sigaction(SIGSEGV,&sig,0);
+    sigaction(SIGFPE,&sig,0);
+    sigaction(SIGPIPE,&sig,0);
+  }
 
   /* Zero fd set */
   FD_ZERO(&readfds);