[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 02/26] qerror: add qerror_report_err()
From: |
Luiz Capitulino |
Subject: |
[Qemu-devel] [PATCH 02/26] qerror: add qerror_report_err() |
Date: |
Fri, 30 Sep 2011 17:34:27 -0300 |
From: Anthony Liguori <address@hidden>
This provides a bridge between Error (new error mechanism) and QError (old error
mechanism). Errors can be propagated whereas QError cannot.
The minor evilness avoids layering violations. Since QError should go away RSN,
it seems like a reasonable hack.
Signed-off-by: Anthony Liguori <address@hidden>
Signed-off-by: Luiz Capitulino <address@hidden>
---
qerror.c | 33 +++++++++++++++++++++++++++++++++
qerror.h | 2 ++
2 files changed, 35 insertions(+), 0 deletions(-)
diff --git a/qerror.c b/qerror.c
index c591a54..68998d4 100644
--- a/qerror.c
+++ b/qerror.c
@@ -482,6 +482,39 @@ void qerror_report_internal(const char *file, int linenr,
const char *func,
}
}
+/* Evil... */
+struct Error
+{
+ QDict *obj;
+ const char *fmt;
+ char *msg;
+};
+
+void qerror_report_err(Error *err)
+{
+ QError *qerr;
+ int i;
+
+ qerr = qerror_new();
+ loc_save(&qerr->loc);
+ QINCREF(err->obj);
+ qerr->error = err->obj;
+
+ for (i = 0; qerror_table[i].error_fmt; i++) {
+ if (strcmp(qerror_table[i].error_fmt, err->fmt) == 0) {
+ qerr->entry = &qerror_table[i];
+ break;
+ }
+ }
+
+ if (monitor_cur_is_qmp()) {
+ monitor_set_error(cur_mon, qerr);
+ } else {
+ qerror_print(qerr);
+ QDECREF(qerr);
+ }
+}
+
/**
* qobject_to_qerror(): Convert a QObject into a QError
*/
diff --git a/qerror.h b/qerror.h
index d407001..d4bfcfd 100644
--- a/qerror.h
+++ b/qerror.h
@@ -15,6 +15,7 @@
#include "qdict.h"
#include "qstring.h"
#include "qemu-error.h"
+#include "error.h"
#include <stdarg.h>
typedef struct QErrorStringTable {
@@ -39,6 +40,7 @@ QString *qerror_human(const QError *qerror);
void qerror_print(QError *qerror);
void qerror_report_internal(const char *file, int linenr, const char *func,
const char *fmt, ...) GCC_FMT_ATTR(4, 5);
+void qerror_report_err(Error *err);
QString *qerror_format(const char *fmt, QDict *error);
#define qerror_report(fmt, ...) \
qerror_report_internal(__FILE__, __LINE__, __func__, fmt, ## __VA_ARGS__)
--
1.7.7.rc0.72.g4b5ea
- [Qemu-devel] [PATCH v2 00/26]: First round of QAPI conversions, Luiz Capitulino, 2011/09/30
- [Qemu-devel] [PATCH 05/26] qapi: fixup command generation for functions that return list types, Luiz Capitulino, 2011/09/30
- [Qemu-devel] [PATCH 04/26] qapi: use middle mode in QMP server, Luiz Capitulino, 2011/09/30
- [Qemu-devel] [PATCH 07/26] qapi: generate qapi_free_* functions for *List types, Luiz Capitulino, 2011/09/30
- [Qemu-devel] [PATCH 09/26] qapi: dealloc visitor, support freeing of nested lists, Luiz Capitulino, 2011/09/30
- [Qemu-devel] [PATCH 06/26] qapi: dealloc visitor, fix premature free and iteration logic, Luiz Capitulino, 2011/09/30
- [Qemu-devel] [PATCH 11/26] qapi: Don't use c_var() on enum strings, Luiz Capitulino, 2011/09/30
- [Qemu-devel] [PATCH 10/26] qapi: modify visitor code generation for list iteration, Luiz Capitulino, 2011/09/30
- [Qemu-devel] [PATCH 02/26] qerror: add qerror_report_err(),
Luiz Capitulino <=
- [Qemu-devel] [PATCH 08/26] qapi: add test cases for generated free functions, Luiz Capitulino, 2011/09/30
- [Qemu-devel] [PATCH 12/26] qapi: Automatically generate a _MAX value for enums, Luiz Capitulino, 2011/09/30
- [Qemu-devel] [PATCH 13/26] qapi: convert query-name, Luiz Capitulino, 2011/09/30
- [Qemu-devel] [PATCH 01/26] error: let error_is_type take a NULL error, Luiz Capitulino, 2011/09/30
- [Qemu-devel] [PATCH 14/26] qapi: Convert query-version, Luiz Capitulino, 2011/09/30
- [Qemu-devel] [PATCH 17/26] RunState: Drop the RSTATE_NO_STATE value, Luiz Capitulino, 2011/09/30
- [Qemu-devel] [PATCH 16/26] vl: Change qemu_vmstop_requested() to return a bool, Luiz Capitulino, 2011/09/30
- [Qemu-devel] [PATCH 15/26] qapi: Convert query-kvm, Luiz Capitulino, 2011/09/30
- [Qemu-devel] [PATCH 03/26] qapi: add code generation support for middle mode, Luiz Capitulino, 2011/09/30
- [Qemu-devel] [PATCH 25/26] qapi: Convert system_reset, Luiz Capitulino, 2011/09/30