From: Eduardo Habkost <ehabkost@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: aliguori@us.ibm.com, jan.kiszka@siemens.com, dlaor@redhat.com,
qemu-devel@nongnu.org, Luiz Capitulino <lcapitulino@redhat.com>,
avi@redhat.com
Subject: Re: [Qemu-devel] [PATCH 03/11] QMP: Introduce protocol print functions
Date: Tue, 23 Jun 2009 10:53:53 -0300 [thread overview]
Message-ID: <20090623135353.GD6462@blackpad> (raw)
In-Reply-To: <4A40DC62.9030407@codemonkey.ws>
On Tue, Jun 23, 2009 at 08:45:06AM -0500, Anthony Liguori wrote:
> Luiz Capitulino wrote:
>> This change introduces the functions that will be used by the Monitor
>> to output data in the format defined by the protocol specification.
>>
>> There are four functions:
>>
>> o monitor_printf_bad() signals a protocol error
>> o monitor_print_ok() signals successful execution
>> o monitor_printf_err() used by commands, to signal execution errors
>> o monitor_printf_data() used by commands, to output data
>>
>> For now monitor_print_ok() compilation is disabled to avoid breaking
>> the build as the function is not currently used. It will be enabled
>> by a later commit.
>>
>> Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
>> ---
>> monitor.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>> monitor.h | 3 ++
>> qemu-tool.c | 12 +++++++++++
>> 3 files changed, 78 insertions(+), 0 deletions(-)
>>
>> diff --git a/monitor.c b/monitor.c
>> index 514db00..dfa777d 100644
>> --- a/monitor.c
>> +++ b/monitor.c
>> @@ -199,6 +199,69 @@ static int monitor_fprintf(FILE *stream, const char *fmt, ...)
>> return 0;
>> }
>> +/*
>> + * QEMU Monitor Control print functions
>> + */
>> +
>> +/* Protocol errors */
>> +void monitor_printf_bad(Monitor *mon, const char *fmt, ...)
>> +{
>> + if (monitor_ctrl_mode(mon)) {
>> + va_list ap;
>> +
>> + monitor_puts(mon, "- BAD ");
>> +
>> + va_start(ap, fmt);
>> + monitor_vprintf(mon, fmt, ap);
>> + va_end(ap);
>> + }
>> +}
>> +
>> +#if 0
>> +/* OK command completion, 'info' commands are special */
>> +static void monitor_print_ok(Monitor *mon, const char *cmd, const char *arg)
>> +{
>> + if (!monitor_ctrl_mode(mon))
>> + return;
>> +
>> + monitor_printf(mon, "+ OK %s", cmd);
>> + if (!strcmp(cmd, "info"))
>> + monitor_printf(mon, " %s", arg);
>> + monitor_puts(mon, " completed\n");
>> +}
>> +#endif
>> +
>> +static void monitor_ctrl_pprintf(Monitor *mon, const char *prefix,
>> + const char *fmt, va_list ap)
>> +{
>> + if (monitor_ctrl_mode(mon))
>> + monitor_puts(mon, prefix);
>> +
>> + monitor_vprintf(mon, fmt, ap);
>> +}
>> +
>> +/* Should be used by commands to signal errors, will add the prefix
>> + * '- ERR ' if in control mode */
>> +void monitor_printf_err(Monitor *mon, const char *fmt, ...)
>> +{
>> + va_list ap;
>> +
>> + va_start(ap, fmt);
>> + monitor_ctrl_pprintf(mon, "- ERR ", fmt, ap);
>> + va_end(ap);
>> +}
>> +
>> +/* Should be used by commands to print any output which is not
>> + * an error, will add the prefix '= ' if in control mode */
>> +void monitor_printf_data(Monitor *mon, const char *fmt, ...)
>> +{
>> + va_list ap;
>> +
>> + va_start(ap, fmt);
>> + monitor_ctrl_pprintf(mon, "= ", fmt, ap);
>> + va_end(ap);
>> +}
>> +
>> static int compare_cmd(const char *name, const char *list)
>> {
>> const char *p, *pstart;
>> diff --git a/monitor.h b/monitor.h
>> index 48bc056..8b054eb 100644
>> --- a/monitor.h
>> +++ b/monitor.h
>> @@ -24,6 +24,9 @@ void monitor_read_bdrv_key_start(Monitor *mon, BlockDriverState *bs,
>> void monitor_vprintf(Monitor *mon, const char *fmt, va_list ap);
>> void monitor_printf(Monitor *mon, const char *fmt, ...)
>> __attribute__ ((__format__ (__printf__, 2, 3)));
>> +void monitor_printf_bad(Monitor *mon, const char *fmt, ...);
>> +void monitor_printf_err(Monitor *mon, const char *fmt, ...);
>> +void monitor_printf_data(Monitor *mon, const char *fmt, ...);
>>
>
> Probably could just introduce a flag to monitor_printf(). In fact, you
> could go kernel style and have:
>
> monitor_printf(mon, MON_BAD "bad monitor command\n");
> monitor_printf(mon, MON_DATA "some monitor data\n");
>
> With MON_DATA being explicit.
>
> If not, make sure to add the format attribute to the printfs.
I think different functions make sense because some messages may have
additional attributes (not only a text message), that may be arguments
to the function. e.g.:
void monitor_printf_event(Monitor *mon, qemu_event_t event, const char *fmt, ...);
void monitor_printf_err(Monitor *mon, int status_code, const char *fmt, ...);
(or maybe we can just call it monitor_printf_result(), being applicable
to both success and failure, depending on the status code).
--
Eduardo
next prev parent reply other threads:[~2009-06-23 13:54 UTC|newest]
Thread overview: 199+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <cover.1245730845.git.lcapitulino@redhat.com>
2009-06-23 4:28 ` [Qemu-devel] [PATCH 01/11] QMP: Introduce specification file Luiz Capitulino
2009-06-23 8:55 ` [Qemu-devel] " Avi Kivity
2009-06-23 9:57 ` Daniel P. Berrange
2009-06-23 10:08 ` Avi Kivity
2009-06-23 13:22 ` Luiz Capitulino
2009-06-23 13:31 ` Avi Kivity
2009-06-23 13:06 ` Luiz Capitulino
2009-06-23 13:10 ` Daniel P. Berrange
2009-06-23 17:12 ` Luiz Capitulino
2009-06-23 13:27 ` Avi Kivity
2009-06-23 17:15 ` Luiz Capitulino
2009-06-23 13:12 ` Anthony Liguori
2009-06-23 13:30 ` Avi Kivity
2009-06-23 13:34 ` Eduardo Habkost
2009-06-23 13:40 ` Anthony Liguori
2009-06-23 15:01 ` Avi Kivity
2009-06-23 15:47 ` Anthony Liguori
2009-06-23 16:02 ` Avi Kivity
2009-06-23 17:20 ` Luiz Capitulino
2009-06-23 14:45 ` [Qemu-devel] " Vincent Hanquez
2009-06-23 15:56 ` Avi Kivity
2009-06-23 15:56 ` Anthony Liguori
2009-06-23 16:04 ` Avi Kivity
2009-06-23 16:09 ` Anthony Liguori
2009-06-23 16:15 ` Avi Kivity
2009-06-23 18:32 ` Anthony Liguori
2009-06-23 18:47 ` Avi Kivity
2009-06-23 19:00 ` Anthony Liguori
2009-06-23 19:44 ` Avi Kivity
2009-06-23 19:52 ` Avi Kivity
2009-06-23 20:07 ` Anthony Liguori
2009-06-23 20:13 ` Avi Kivity
2009-06-23 22:02 ` Anthony Liguori
2009-06-23 22:02 ` Vincent Hanquez
2009-06-23 22:50 ` Anthony Liguori
2009-06-24 1:01 ` Vincent Hanquez
2009-06-24 11:55 ` James
2009-06-24 12:09 ` Daniel P. Berrange
2009-06-24 12:32 ` James
2009-06-24 12:54 ` Daniel P. Berrange
2009-06-24 14:31 ` Stefano Stabellini
2009-06-24 12:46 ` Anthony Liguori
2009-06-24 13:02 ` Daniel P. Berrange
2009-06-24 13:21 ` Avi Kivity
2009-06-24 13:09 ` Avi Kivity
2009-06-24 16:22 ` Jamie Lokier
2009-06-24 16:25 ` Avi Kivity
2009-06-24 18:52 ` Jamie Lokier
2009-06-24 17:39 ` Vincent Hanquez
2009-06-24 18:23 ` Filip Navara
2009-06-24 18:41 ` Jamie Lokier
2009-06-24 18:42 ` Vincent Hanquez
2009-06-24 18:55 ` Filip Navara
2009-06-24 18:56 ` Jamie Lokier
2009-06-24 13:34 ` Ian Jackson
2009-06-24 16:09 ` Jamie Lokier
2009-06-24 14:03 ` Filip Navara
2009-06-25 19:30 ` Luiz Capitulino
2009-06-24 14:06 ` Vincent Hanquez
2009-06-24 14:41 ` Stefano Stabellini
2009-06-24 14:56 ` Chris Webb
2009-06-24 19:01 ` Jamie Lokier
2009-06-24 15:57 ` Filip Navara
2009-06-24 16:22 ` Avi Kivity
2009-06-24 16:42 ` Filip Navara
2009-06-24 19:05 ` Jamie Lokier
2009-06-24 19:24 ` Filip Navara
2009-06-24 21:13 ` Jamie Lokier
2009-06-24 21:29 ` Filip Navara
2009-06-24 21:47 ` Jamie Lokier
2009-06-25 13:07 ` Stefano Stabellini
2009-06-25 14:55 ` Avi Kivity
2009-06-25 15:10 ` Anthony Liguori
2009-06-25 15:20 ` Avi Kivity
2009-06-25 17:04 ` Stefano Stabellini
2009-06-25 18:10 ` Anthony Liguori
2009-06-25 19:03 ` Daniel P. Berrange
2009-06-26 9:00 ` Avi Kivity
2009-06-26 9:10 ` Daniel P. Berrange
2009-06-26 9:16 ` Avi Kivity
2009-06-26 9:44 ` Daniel P. Berrange
2009-06-26 11:41 ` Vincent Hanquez
2009-06-25 18:09 ` Anthony Liguori
2009-06-25 18:31 ` Avi Kivity
2009-06-25 19:54 ` Anthony Liguori
2009-06-26 9:12 ` Avi Kivity
2009-06-26 13:21 ` Anthony Liguori
2009-06-26 15:02 ` Anthony Liguori
2009-06-26 17:36 ` Filip Navara
2009-06-26 19:36 ` Anthony Liguori
2009-06-26 20:25 ` Filip Navara
2009-06-28 13:16 ` Avi Kivity
2009-06-28 17:30 ` Anthony Liguori
2009-06-28 17:36 ` Avi Kivity
2009-06-29 9:44 ` Stefano Stabellini
2009-06-29 9:50 ` Avi Kivity
2009-06-29 10:09 ` Stefano Stabellini
2009-06-27 7:03 ` Filip Navara
2009-06-28 12:11 ` Avi Kivity
2009-06-28 13:13 ` Avi Kivity
2009-06-28 17:23 ` Anthony Liguori
2009-06-28 17:34 ` Avi Kivity
2009-06-29 0:42 ` Anthony Liguori
2009-06-29 6:04 ` Avi Kivity
2009-06-29 9:48 ` Stefano Stabellini
2009-06-29 20:23 ` Anthony Liguori
2009-06-30 5:37 ` Avi Kivity
2009-06-30 13:30 ` Anthony Liguori
2009-06-30 13:51 ` Stefano Stabellini
2009-06-30 13:52 ` Avi Kivity
2009-06-30 13:56 ` Anthony Liguori
2009-06-30 14:03 ` Luiz Capitulino
2009-06-30 16:05 ` Avi Kivity
2009-06-30 18:21 ` Anthony Liguori
2009-07-01 8:07 ` Avi Kivity
2009-06-29 14:41 ` Stefano Stabellini
2009-06-29 14:56 ` Avi Kivity
2009-06-28 17:38 ` Filip Navara
2009-06-26 11:36 ` Vincent Hanquez
2009-06-24 16:00 ` Jamie Lokier
2009-06-23 16:20 ` Avi Kivity
2009-06-23 17:59 ` Vincent Hanquez
2009-06-23 15:41 ` Blue Swirl
2009-06-23 4:28 ` [Qemu-devel] [PATCH 02/11] QMP: Introduce MONITOR_USE_CONTROL flag Luiz Capitulino
2009-06-23 4:28 ` [Qemu-devel] [PATCH 03/11] QMP: Introduce protocol print functions Luiz Capitulino
2009-06-23 13:45 ` Anthony Liguori
2009-06-23 13:53 ` Eduardo Habkost [this message]
2009-06-23 4:28 ` [Qemu-devel] [PATCH 04/11] QMP: Make monitor_handle_command() QMP aware Luiz Capitulino
2009-06-23 13:51 ` Anthony Liguori
2009-06-23 17:25 ` Luiz Capitulino
2009-06-23 4:29 ` [Qemu-devel] [PATCH 05/11] QMP: Introduce control mode chardev handling Luiz Capitulino
2009-06-23 4:29 ` [Qemu-devel] [PATCH 06/11] QMP: Introduce asynchronous events infrastructure Luiz Capitulino
2009-06-23 8:59 ` [Qemu-devel] " Jan Kiszka
2009-06-23 13:31 ` Luiz Capitulino
2009-06-23 10:08 ` Daniel P. Berrange
2009-06-23 10:11 ` Avi Kivity
2009-06-23 14:46 ` Paul Brook
2009-06-23 10:32 ` Daniel P. Berrange
2009-06-23 11:23 ` Avi Kivity
2009-06-23 13:36 ` Luiz Capitulino
2009-06-23 13:48 ` Eduardo Habkost
2009-06-23 13:51 ` Jan Kiszka
2009-06-23 16:34 ` Avi Kivity
2009-06-23 16:47 ` Daniel P. Berrange
2009-06-23 4:29 ` [Qemu-devel] [PATCH 07/11] QMP: Enable simple commands Luiz Capitulino
2009-06-23 4:29 ` [Qemu-devel] [PATCH 08/11] QMP: Port balloon command Luiz Capitulino
2009-06-23 9:42 ` [Qemu-devel] " Avi Kivity
2009-06-23 13:59 ` Anthony Liguori
2009-06-23 16:36 ` Avi Kivity
2009-06-23 16:58 ` Anthony Liguori
2009-06-23 16:59 ` Luiz Capitulino
2009-06-23 18:38 ` Anthony Liguori
2009-06-25 11:27 ` Dor Laor
2009-06-25 19:11 ` Luiz Capitulino
2009-06-26 9:21 ` Avi Kivity
2009-06-26 9:42 ` Daniel P. Berrange
2009-06-26 11:15 ` Avi Kivity
2009-06-27 15:58 ` Luiz Capitulino
2009-06-28 15:52 ` Avi Kivity
2009-06-28 16:30 ` Blue Swirl
2009-06-28 17:23 ` Filip Navara
2009-06-28 17:43 ` Avi Kivity
2009-06-28 17:51 ` Blue Swirl
2009-06-28 18:36 ` Avi Kivity
2009-06-28 22:11 ` Jamie Lokier
2009-06-25 19:59 ` Anthony Liguori
2009-06-23 4:29 ` [Qemu-devel] [PATCH 09/11] QMP: Port 'info blockstats' command Luiz Capitulino
2009-06-23 9:43 ` [Qemu-devel] " Avi Kivity
2009-06-23 9:59 ` Jan Kiszka
2009-06-23 10:09 ` Avi Kivity
2009-06-23 10:10 ` Jan Kiszka
2009-06-23 14:01 ` [Qemu-devel] " Anthony Liguori
2009-06-23 4:29 ` [Qemu-devel] [PATCH 10/11] QMP: Introduce basic events Luiz Capitulino
2009-06-23 9:46 ` [Qemu-devel] " Avi Kivity
2009-06-23 17:07 ` Luiz Capitulino
2009-06-23 10:06 ` Daniel P. Berrange
2009-06-23 4:30 ` [Qemu-devel] [PATCH 11/11] QMP: Command-line flag to enable control mode Luiz Capitulino
2009-06-23 9:03 ` [Qemu-devel] " Jan Kiszka
2009-06-23 10:04 ` Daniel P. Berrange
2009-06-23 10:11 ` Jan Kiszka
2009-06-23 10:17 ` Avi Kivity
2009-06-23 10:54 ` Jan Kiszka
2009-06-23 11:28 ` Avi Kivity
2009-06-23 11:44 ` Jan Kiszka
2009-06-23 11:51 ` Avi Kivity
2009-06-23 11:53 ` Jan Kiszka
2009-06-23 12:01 ` Avi Kivity
2009-06-23 12:39 ` Jan Kiszka
2009-06-23 12:46 ` Avi Kivity
2009-06-23 12:48 ` Avi Kivity
2009-06-23 11:54 ` Daniel P. Berrange
2009-06-23 11:48 ` Daniel P. Berrange
2009-06-23 12:25 ` Avi Kivity
2009-06-23 14:06 ` Anthony Liguori
2009-06-23 10:19 ` Daniel P. Berrange
2009-06-23 11:13 ` Jan Kiszka
2009-06-23 13:59 ` Luiz Capitulino
2009-06-23 14:06 ` Jan Kiszka
2009-06-23 17:27 ` 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=20090623135353.GD6462@blackpad \
--to=ehabkost@redhat.com \
--cc=aliguori@us.ibm.com \
--cc=anthony@codemonkey.ws \
--cc=avi@redhat.com \
--cc=dlaor@redhat.com \
--cc=jan.kiszka@siemens.com \
--cc=lcapitulino@redhat.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.