[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v6 1/5] util: Introduce error reporting functions wi
From: |
Lluís Vilanova |
Subject: |
[Qemu-devel] [PATCH v6 1/5] util: Introduce error reporting functions with fatal/abort |
Date: |
Tue, 2 Feb 2016 17:13:58 +0100 |
User-agent: |
StGit/0.17.1-dirty |
Provide two lean functions to report error messages that fatal/abort
QEMU.
Signed-off-by: Lluís Vilanova <address@hidden>
---
include/qemu/error-report.h | 19 +++++++++++++++++++
util/qemu-error.c | 33 +++++++++++++++++++++++++++++++++
2 files changed, 52 insertions(+)
diff --git a/include/qemu/error-report.h b/include/qemu/error-report.h
index 7ab2355..6c2f142 100644
--- a/include/qemu/error-report.h
+++ b/include/qemu/error-report.h
@@ -43,4 +43,23 @@ void error_report(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
const char *error_get_progname(void);
extern bool enable_timestamp_msg;
+/* Report message and exit with error */
+void QEMU_NORETURN error_vreport_fatal(const char *fmt, va_list ap)
GCC_FMT_ATTR(1, 0);
+void QEMU_NORETURN error_report_fatal(const char *fmt, ...) GCC_FMT_ATTR(1, 2);
+/* Report message with caller location and abort */
+#define error_vreport_abort(fmt, ap) \
+ do { \
+ error_report_abort_caller_internal(__FILE__, __LINE__, __func__); \
+ error_vreport_abort_internal(fmt, ap); \
+ } while (0)
+#define error_report_abort(fmt, ...) \
+ do { \
+ error_report_abort_caller_internal(__FILE__, __LINE__, __func__); \
+ error_report_abort_internal(fmt, ##__VA_ARGS__); \
+ } while (0)
+
+void error_report_abort_caller_internal(const char *file, int line, const char
*func);
+void QEMU_NORETURN error_vreport_abort_internal(const char *fmt, va_list ap)
GCC_FMT_ATTR(1, 0);
+void QEMU_NORETURN error_report_abort_internal(const char *fmt, ...)
GCC_FMT_ATTR(1, 2);
+
#endif
diff --git a/util/qemu-error.c b/util/qemu-error.c
index ecf5708..3de002b 100644
--- a/util/qemu-error.c
+++ b/util/qemu-error.c
@@ -237,3 +237,36 @@ void error_report(const char *fmt, ...)
error_vreport(fmt, ap);
va_end(ap);
}
+
+void error_vreport_fatal(const char *fmt, va_list ap)
+{
+ error_vreport(fmt, ap);
+ exit(1);
+}
+
+void error_report_fatal(const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ error_vreport_fatal(fmt, ap);
+ va_end(ap);
+}
+
+void error_report_abort_caller_internal(const char *file, int line, const char
*func)
+{
+ error_report("Unexpected error in %s() at %s:%d:", func, file, line);
+}
+
+void error_vreport_abort_internal(const char *fmt, va_list ap)
+{
+ error_vreport(fmt, ap);
+ abort();
+}
+
+void error_report_abort_internal(const char *fmt, ...)
+{
+ va_list ap;
+ va_start(ap, fmt);
+ error_vreport_abort_internal(fmt, ap);
+ va_end(ap);
+}
- [Qemu-devel] [RFC][PATCH v6 0/5] utils: Improve and document error reporting, Lluís Vilanova, 2016/02/02
- [Qemu-devel] [PATCH v6 1/5] util: Introduce error reporting functions with fatal/abort,
Lluís Vilanova <=
- Re: [Qemu-devel] [PATCH v6 1/5] util: Introduce error reporting functions with fatal/abort, Markus Armbruster, 2016/02/02
- Re: [Qemu-devel] [PATCH v6 1/5] util: Introduce error reporting functions with fatal/abort, Thomas Huth, 2016/02/02
- Re: [Qemu-devel] [PATCH v6 1/5] util: Introduce error reporting functions with fatal/abort, David Gibson, 2016/02/03
- Re: [Qemu-devel] [PATCH v6 1/5] util: Introduce error reporting functions with fatal/abort, Markus Armbruster, 2016/02/03
- Re: [Qemu-devel] [PATCH v6 1/5] util: Introduce error reporting functions with fatal/abort, Thomas Huth, 2016/02/03
- Re: [Qemu-devel] [PATCH v6 1/5] util: Introduce error reporting functions with fatal/abort, Markus Armbruster, 2016/02/03
- Re: [Qemu-devel] [PATCH v6 1/5] util: Introduce error reporting functions with fatal/abort, Lluís Vilanova, 2016/02/03
- Re: [Qemu-devel] [PATCH v6 1/5] util: Introduce error reporting functions with fatal/abort, Markus Armbruster, 2016/02/03
- Re: [Qemu-devel] [PATCH v6 1/5] util: Introduce error reporting functions with fatal/abort, Lluís Vilanova, 2016/02/03
- Re: [Qemu-devel] [PATCH v6 1/5] util: Introduce error reporting functions with fatal/abort, Markus Armbruster, 2016/02/03