qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Luiz Capitulino <lcapitulino@redhat.com>
To: qemu-devel@nongnu.org
Cc: aliguori@us.ibm.com, ehabkost@redhat.com, jan.kiszka@siemens.com,
	dlaor@redhat.com, avi@redhat.com
Subject: [Qemu-devel] [PATCH 03/11] QMP: Introduce protocol print functions
Date: Tue, 23 Jun 2009 01:28:38 -0300	[thread overview]
Message-ID: <20090623012838.764dd37a@doriath> (raw)
In-Reply-To: <cover.1245730845.git.lcapitulino@redhat.com>

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, ...);
 void monitor_print_filename(Monitor *mon, const char *filename);
 void monitor_flush(Monitor *mon);
 
diff --git a/qemu-tool.c b/qemu-tool.c
index c08f061..2ba9983 100644
--- a/qemu-tool.c
+++ b/qemu-tool.c
@@ -40,6 +40,18 @@ void monitor_print_filename(Monitor *mon, const char *filename)
 {
 }
 
+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, ...)
+{
+}
+
 QEMUBH *qemu_bh_new(QEMUBHFunc *cb, void *opaque)
 {
     QEMUBH *bh;
-- 
1.6.3.GIT

  parent reply	other threads:[~2009-06-23  4:28 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 ` Luiz Capitulino [this message]
2009-06-23 13:45   ` [Qemu-devel] [PATCH 03/11] QMP: Introduce protocol print functions Anthony Liguori
2009-06-23 13:53     ` Eduardo Habkost
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=20090623012838.764dd37a@doriath \
    --to=lcapitulino@redhat.com \
    --cc=aliguori@us.ibm.com \
    --cc=avi@redhat.com \
    --cc=dlaor@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=jan.kiszka@siemens.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).