Removed Common
Change-Id: I01ea8f07220375c2ad9bc0092281d4f27c642303
diff --git a/aos/die.h b/aos/die.h
new file mode 100644
index 0000000..4296881
--- /dev/null
+++ b/aos/die.h
@@ -0,0 +1,51 @@
+#ifndef AOS_DIE_H_
+#define AOS_DIE_H_
+
+#include <stdarg.h>
+
+#include "aos/macros.h"
+#include "aos/libc/aos_strerror.h"
+
+namespace aos {
+
+// Terminates the task/process and logs a message (without using the logging
+// framework). Designed for use in code that can't use the logging framework
+// (code that can should LOG(FATAL), which calls this).
+void Die(const char *format, ...)
+ __attribute__((noreturn))
+ __attribute__((format(GOOD_PRINTF_FORMAT_TYPE, 1, 2)));
+void VDie(const char *format, va_list args)
+ __attribute__((noreturn))
+ __attribute__((format(GOOD_PRINTF_FORMAT_TYPE, 1, 0)));
+
+
+// The same as Die except appends " because of %d (%s)" (formatted with errno
+// and aos_strerror(errno)) to the message.
+#define PDie(format, args...) \
+ do { \
+ const int error = errno; \
+ ::aos::Die(format " because of %d (%s)", ##args, error, \
+ aos_strerror(error)); \
+ } while (false)
+
+// The same as Die except appends " because of %d (%s)" (formatted with error
+// and aos_strerror(error)) to the message.
+// PCHECK is to PDie as PRCHECK is to PRDie
+//
+// Example:
+// const int ret = pthread_mutex_lock(whatever);
+// if (ret != 0) PRDie(ret, "pthread_mutex_lock(%p) failed", whatever);
+#define PRDie(error, format, args...) \
+ do { \
+ ::aos::Die(format " because of %d (%s)", ##args, error, \
+ aos_strerror(error)); \
+ } while (false)
+
+// Turns on (or off) "test mode", where (V)Die doesn't write out files and
+// doesn't print to stdout.
+// Test mode defaults to false.
+void SetDieTestMode(bool test_mode);
+
+} // namespace aos
+
+#endif // AOS_DIE_H_