schedule: improve is_enabled() routines
[c11tester.git] / common.cc
index 8cb649bbb10db23b0cb2b4cd2e374e294e73390c..f4aa7ecefa023417c7eec4680e38e1c25a5cc13b 100644 (file)
--- a/common.cc
+++ b/common.cc
@@ -2,13 +2,21 @@
 #include <stdio.h>
 #include <stdlib.h>
 
+#include <model-assert.h>
+
 #include "common.h"
+#include "model.h"
+#include "stacktrace.h"
 
 #define MAX_TRACE_LEN 100
 
+#define CONFIG_STACKTRACE
 /** Print a backtrace of the current program state. */
 void print_trace(void)
 {
+#ifdef CONFIG_STACKTRACE
+       print_stacktrace(stdout);
+#else
        void *array[MAX_TRACE_LEN];
        char **strings;
        int size, i;
@@ -22,4 +30,25 @@ void print_trace(void)
                printf("\t%s\n", strings[i]);
 
        free(strings);
+#endif /* CONFIG_STACKTRACE */
+}
+
+void model_print_summary(void)
+{
+       model->print_summary();
+}
+
+void assert_hook(void)
+{
+       printf("Add breakpoint to line %u in file %s.\n",__LINE__,__FILE__);
+}
+
+void model_assert(bool expr, const char *file, int line)
+{
+       if (!expr) {
+               printf("  [BUG] Program has hit assertion in file %s at line %d\n",
+                               file, line);
+               model->set_assert();
+               model->switch_to_master(NULL);
+       }
 }