model: add read-acquire/fence-release support
[c11tester.git] / common.cc
index bbb30539a8bd36710d9837614c2823b4f1ed3894..c190ed37487e44ff37d9145017dad1bd654085d0 100644 (file)
--- a/common.cc
+++ b/common.cc
@@ -14,8 +14,8 @@
 
 #define MAX_TRACE_LEN 100
 
-FILE *model_out;
-int fd_user_out; /**< @brief File descriptor from which to read user program output */
+/** @brief Model-checker output stream; default to stdout until redirected */
+FILE *model_out = stdout;
 
 #define CONFIG_STACKTRACE
 /** Print a backtrace of the current program state. */
@@ -60,6 +60,10 @@ void model_assert(bool expr, const char *file, int line)
        }
 }
 
+#ifndef CONFIG_DEBUG
+
+static int fd_user_out; /**< @brief File descriptor from which to read user program output */
+
 /**
  * @brief Setup output redirecting
  *
@@ -77,6 +81,8 @@ void model_assert(bool expr, const char *file, int line)
  * output much data, we will need to buffer it in user-space during execution.
  * This also means that if ModelChecker decides not to print an execution, it
  * should promptly clear the pipe.
+ *
+ * This function should only be called once.
  */
 void redirect_output()
 {
@@ -159,3 +165,4 @@ void print_program_output()
                }
        }
 }
+#endif /* ! CONFIG_DEBUG */