mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 07:43:54 -06:00
error, qerror: add ErrorClass argument to error functions
The new argument is added to functions qerror_report() and error_set(). It's stored in Error and QError. qerror_report_err() is also updated to take care of it. The QERR_ macros are changed to contain a place holder value for the new argument, so that the value is used on all current calls to qerror_report() and error_set() (and also to initialize qerror_table[]). Next commit will update the QERR_ macros with a proper ErrorClass value. Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com>
This commit is contained in:
parent
85465051e0
commit
13f59ae815
4 changed files with 90 additions and 78 deletions
10
qerror.c
10
qerror.c
|
@ -386,13 +386,15 @@ static QDict *error_obj_from_fmt_no_fail(const char *fmt, va_list *va)
|
|||
*
|
||||
* Return strong reference.
|
||||
*/
|
||||
static QError *qerror_from_info(const char *fmt, va_list *va)
|
||||
static QError *qerror_from_info(ErrorClass err_class, const char *fmt,
|
||||
va_list *va)
|
||||
{
|
||||
QError *qerr;
|
||||
|
||||
qerr = qerror_new();
|
||||
loc_save(&qerr->loc);
|
||||
|
||||
qerr->err_class = err_class;
|
||||
qerr->error = error_obj_from_fmt_no_fail(fmt, va);
|
||||
qerr->err_msg = qerror_format(fmt, qerr->error);
|
||||
|
||||
|
@ -518,13 +520,13 @@ static void qerror_print(QError *qerror)
|
|||
QDECREF(qstring);
|
||||
}
|
||||
|
||||
void qerror_report(const char *fmt, ...)
|
||||
void qerror_report(ErrorClass eclass, const char *fmt, ...)
|
||||
{
|
||||
va_list va;
|
||||
QError *qerror;
|
||||
|
||||
va_start(va, fmt);
|
||||
qerror = qerror_from_info(fmt, &va);
|
||||
qerror = qerror_from_info(eclass, fmt, &va);
|
||||
va_end(va);
|
||||
|
||||
if (monitor_cur_is_qmp()) {
|
||||
|
@ -540,6 +542,7 @@ struct Error
|
|||
{
|
||||
QDict *obj;
|
||||
char *msg;
|
||||
ErrorClass err_class;
|
||||
};
|
||||
|
||||
void qerror_report_err(Error *err)
|
||||
|
@ -551,6 +554,7 @@ void qerror_report_err(Error *err)
|
|||
QINCREF(err->obj);
|
||||
qerr->error = err->obj;
|
||||
qerr->err_msg = g_strdup(err->msg);
|
||||
qerr->err_class = err->err_class;
|
||||
|
||||
if (monitor_cur_is_qmp()) {
|
||||
monitor_set_error(cur_mon, qerr);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue