qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Luiz Capitulino <lcapitulino@redhat.com>
Cc: Kevin Wolf <kwolf@redhat.com>,
	Anthony Liguori <aliguori@us.ibm.com>,
	qemu-devel@nongnu.org, Michael Roth <mdroth@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] [PATCH 01/14] qerror: add qerror_report_err()
Date: Fri, 02 Sep 2011 10:59:37 -0500	[thread overview]
Message-ID: <4E60FD69.6020600@codemonkey.ws> (raw)
In-Reply-To: <20110824171553.3edc819b@doriath>

On 08/24/2011 03:15 PM, Luiz Capitulino wrote:
> On Wed, 24 Aug 2011 13:42:56 -0500
> Anthony Liguori<aliguori@us.ibm.com>  wrote:
>
>> 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<aliguori@us.ibm.com>
>> ---
>>   qerror.c |   33 +++++++++++++++++++++++++++++++++
>>   qerror.h |    2 ++
>>   2 files changed, 35 insertions(+), 0 deletions(-)
>>
>> diff --git a/qerror.c b/qerror.c
>> index 3d64b80..fa647a6 100644
>> --- a/qerror.c
>> +++ b/qerror.c
>> @@ -478,6 +478,39 @@ void qerror_report_internal(const char *file, int linenr, const char *func,
>>       }
>>   }
>>
>> +/* Evil... */
>> +struct Error
>> +{
>> +    QDict *obj;
>> +    const char *fmt;
>> +    char *msg;
>> +};
>
> Given that we're in hack mode, I think I'd prefer to have struct Error in
> error.h and then include it here.

That adds a QObject dependency to error.h which cascades a bunch of 
dependencies.  I don't like this much either but I think it's the least 
of a few evils.

>
>> +
>> +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];
>> +            return;
>
> You have to drop this return, else the if clause below won't be
> executed. Or you could just use qerror_set_desc().


Thanks!

Regards,

Anthony Liguori

>> +        }
>> +    }
>> +
>> +    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 8058456..4fe24aa 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__)
>
>

  reply	other threads:[~2011-09-02 15:59 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-08-24 18:42 [Qemu-devel] [PATCH 00/14] Convert commands to QAPI (batch 1) Anthony Liguori
2011-08-24 18:42 ` [Qemu-devel] [PATCH 01/14] qerror: add qerror_report_err() Anthony Liguori
2011-08-24 20:15   ` Luiz Capitulino
2011-09-02 15:59     ` Anthony Liguori [this message]
2011-08-24 18:42 ` [Qemu-devel] [PATCH 02/14] qapi: add code generation support for middle mode Anthony Liguori
2011-08-24 18:42 ` [Qemu-devel] [PATCH 03/14] qapi: use middle mode in QMP server Anthony Liguori
2011-08-24 20:20   ` Luiz Capitulino
2011-08-24 20:38     ` Anthony Liguori
2011-08-25 16:24   ` Michael Roth
2011-08-25 16:30     ` Luiz Capitulino
2011-09-02 16:00     ` Anthony Liguori
2011-09-02 16:09       ` Luiz Capitulino
2011-09-02 16:31         ` Michael Roth
2011-09-02 16:45           ` Anthony Liguori
2011-09-02 16:57             ` Luiz Capitulino
2011-08-24 18:42 ` [Qemu-devel] [PATCH 04/14] qapi: convert query-name Anthony Liguori
2011-08-24 20:28   ` Luiz Capitulino
2011-08-24 20:41     ` Anthony Liguori
2011-08-24 21:02       ` Luiz Capitulino
2011-08-24 18:43 ` [Qemu-devel] [PATCH 05/14] block: add unsafe_probe Anthony Liguori
2011-08-24 18:43 ` [Qemu-devel] [PATCH 06/14] monitor: expose readline state Anthony Liguori
2011-08-24 18:43 ` [Qemu-devel] [PATCH 07/14] qerror: add additional parameter to QERR_DEVICE_ENCRYPTED Anthony Liguori
2011-08-24 18:43 ` [Qemu-devel] [PATCH 08/14] qapi: convert eject (qmp and hmp) to QAPI Anthony Liguori
2011-08-24 21:06   ` Luiz Capitulino
2011-08-25 12:19   ` Kevin Wolf
2011-08-25 13:40     ` Anthony Liguori
2011-08-25 13:52       ` Kevin Wolf
2011-08-25 14:03         ` Avi Kivity
2011-09-02 16:05         ` Anthony Liguori
2011-09-02 16:36           ` Kevin Wolf
2011-08-24 18:43 ` [Qemu-devel] [PATCH 09/14] qapi: convert block_passwd and add set-blockdev-password Anthony Liguori
2011-08-25 12:29   ` Kevin Wolf
2011-08-24 18:43 ` [Qemu-devel] [PATCH 10/14] qapi: add change-vnc-password Anthony Liguori
2011-08-25  9:07   ` Gerd Hoffmann
2011-08-25 13:12     ` Anthony Liguori
2011-08-25 13:33   ` Luiz Capitulino
2011-09-02 16:08     ` Anthony Liguori
2011-08-24 18:43 ` [Qemu-devel] [PATCH 11/14] qapi: add change-vnc-listen Anthony Liguori
2011-08-25 13:32   ` Luiz Capitulino
2011-09-02 16:11     ` Anthony Liguori
2011-08-24 18:43 ` [Qemu-devel] [PATCH 12/14] qapi: introduce change-blockdev Anthony Liguori
2011-08-25 12:46   ` Kevin Wolf
2011-08-25 12:56     ` Anthony Liguori
2011-08-25 13:47       ` Kevin Wolf
2011-08-25 13:50         ` Anthony Liguori
2011-08-25 14:09   ` Luiz Capitulino
2011-08-25 14:21     ` Anthony Liguori
2011-08-25 14:52       ` Luiz Capitulino
2011-08-24 18:43 ` [Qemu-devel] [PATCH 13/14] qapi: convert change Anthony Liguori
2011-08-25 14:43   ` Luiz Capitulino
2011-08-24 18:43 ` [Qemu-devel] [PATCH 14/14] vnc: don't demote authentication protocol when disabling login Anthony Liguori
2011-08-24 20:45   ` Daniel P. Berrange
2011-08-24 20:47     ` Anthony Liguori
2011-08-25 14:55 ` [Qemu-devel] [PATCH 00/14] Convert commands to QAPI (batch 1) Luiz Capitulino

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4E60FD69.6020600@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=aliguori@us.ibm.com \
    --cc=kwolf@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).