From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=40810 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OEiyt-0003Z2-JS for qemu-devel@nongnu.org; Wed, 19 May 2010 09:06:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OEiyq-0001KB-PC for qemu-devel@nongnu.org; Wed, 19 May 2010 09:06:39 -0400 Received: from mx1.redhat.com ([209.132.183.28]:62659) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OEiyq-0001K2-Hc for qemu-devel@nongnu.org; Wed, 19 May 2010 09:06:36 -0400 Date: Wed, 19 May 2010 10:06:29 -0300 From: Luiz Capitulino Message-ID: <20100519100629.3009bee7@redhat.com> In-Reply-To: <4BF3AC24.8050401@siemens.com> References: <1274232769-11160-1-git-send-email-lcapitulino@redhat.com> <1274232769-11160-3-git-send-email-lcapitulino@redhat.com> <4BF3AC24.8050401@siemens.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH 2/3] QMP: Introduce commands documentation List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: "armbru@redhat.com" , "aliguori@us.ibm.com" , "qemu-devel@nongnu.org" , "avi@redhat.com" On Wed, 19 May 2010 11:15:16 +0200 Jan Kiszka wrote: > Luiz Capitulino wrote: > > From: Jan Kiszka > > > > One of the most important missing feature in QMP today is its > > supported commands documentation. > > > > The plan is to make it part of self-description support, however > > self-description is a big task we have been postponing for a > > long time now and still don't know when it's going to be done. > > > > In order not to compromise QMP adoption and make users' life easier, > > this commit adds a simple text documentation which fully describes > > all QMP supported commands. > > > > This is not ideal for a number of reasons (harder to maintain, > > text-only, etc) but does improve the current situation. To avoid at > > least divering from the user monitor help and texi snippets, QMP bits > > are also maintained inside qemu-monitor.hx, and hxtool is extended to > > generate a single text file from them. > > > > Signed-off-by: Jan Kiszka > > Signed-off-by: Luiz Capitulino > > --- > > Makefile | 5 +- > > QMP/README | 5 +- > > configure | 4 + > > hxtool | 44 ++- > > qemu-monitor.hx | 1314 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- > > 5 files changed, 1367 insertions(+), 5 deletions(-) > > > > diff --git a/Makefile b/Makefile > > index 306a1a4..110698e 100644 > > --- a/Makefile > > +++ b/Makefile > > @@ -29,7 +29,7 @@ $(call set-vpath, $(SRC_PATH):$(SRC_PATH)/hw) > > LIBS+=-lz $(LIBS_TOOLS) > > > > ifdef BUILD_DOCS > > -DOCS=qemu-doc.html qemu-tech.html qemu.1 qemu-img.1 qemu-nbd.8 > > +DOCS=qemu-doc.html qemu-tech.html qemu.1 qemu-img.1 qemu-nbd.8 QMP/qmp-commands.txt > > else > > DOCS= > > endif > > @@ -259,6 +259,9 @@ qemu-options.texi: $(SRC_PATH)/qemu-options.hx > > qemu-monitor.texi: $(SRC_PATH)/qemu-monitor.hx > > $(call quiet-command,sh $(SRC_PATH)/hxtool -t < $< > $@," GEN $@") > > > > +QMP/qmp-commands.txt: $(SRC_PATH)/qemu-monitor.hx > > + $(call quiet-command,sh $(SRC_PATH)/hxtool -q < $< > $@," GEN $@") > > + > > qemu-img-cmds.texi: $(SRC_PATH)/qemu-img-cmds.hx > > $(call quiet-command,sh $(SRC_PATH)/hxtool -t < $< > $@," GEN $@") > > > > diff --git a/QMP/README b/QMP/README > > index 9334c25..35a80c7 100644 > > --- a/QMP/README > > +++ b/QMP/README > > @@ -15,8 +15,9 @@ QMP is JSON[1] based and has the following features: > > > > For more information, please, refer to the following files: > > > > -o qmp-spec.txt QEMU Monitor Protocol current specification > > -o qmp-events.txt List of available asynchronous events > > +o qmp-spec.txt QEMU Monitor Protocol current specification > > +o qmp-commands.txt QMP supported commands > > +o qmp-events.txt List of available asynchronous events > > > > There are also two simple Python scripts available: > > > > diff --git a/configure b/configure > > index 36d028f..6738e0b 100755 > > --- a/configure > > +++ b/configure > > @@ -2807,3 +2807,7 @@ ln -s $source_path/Makefile.user $d/Makefile > > if test "$static" = "no" -a "$user_pie" = "yes" ; then > > echo "QEMU_CFLAGS+=-fpie" > $d/config.mak > > fi > > + > > +if test "$docs" = "yes" ; then > > + mkdir -p QMP > > +fi > > diff --git a/hxtool b/hxtool > > index 8f65532..d499dc0 100644 > > --- a/hxtool > > +++ b/hxtool > > @@ -7,7 +7,7 @@ hxtoh() > > case $str in > > HXCOMM*) > > ;; > > - STEXI*|ETEXI*) flag=$(($flag^1)) > > + STEXI*|ETEXI*|SQMP*|EQMP*) flag=$(($flag^1)) > > ;; > > *) > > test $flag -eq 1 && printf "%s\n" "$str" > > @@ -38,6 +38,12 @@ hxtotexi() > > fi > > flag=0 > > ;; > > + SQMP*|EQMP*) > > + if test $flag -eq 1 ; then > > + echo "line $line: syntax error: expected ETEXI, found $str" >&2 > > + exit 1 > > + fi > > + ;; > > DEFHEADING*) > > echo "$(expr "$str" : "DEFHEADING(\(.*\))")" > > ;; > > @@ -49,9 +55,45 @@ hxtotexi() > > done > > } > > > > +hxtoqmp() > > +{ > > + IFS= > > + flag=0 > > + while read -r str; do > > + case "$str" in > > + HXCOMM*) > > + ;; > > + SQMP*) > > + if test $flag -eq 1 ; then > > + echo "line $line: syntax error: expected EQMP, found $str" >&2 > > + exit 1 > > + fi > > + flag=1 > > + ;; > > + EQMP*) > > + if test $flag -ne 1 ; then > > + echo "line $line: syntax error: expected SQMP, found $str" >&2 > > + exit 1 > > + fi > > + flag=0 > > + ;; > > + STEXI*|ETEXI*) > > + if test $flag -eq 1 ; then > > + echo "line $line: syntax error: expected EQMP, found $str" >&2 > > + exit 1 > > + fi > > + ;; > > + *) > > + test $flag -eq 1 && echo "$str" > > + ;; > > + esac > > + done > > +} > > + > > case "$1" in > > "-h") hxtoh ;; > > "-t") hxtotexi ;; > > +"-q") hxtoqmp ;; > > *) exit 1 ;; > > esac > > > > Unfortunately, it looks like you mismerged my hxtool changes (the syntax > checking bits and the extensions for S/EQMP. Isn't the extensions for S/EQMP in the hunk right above us? I didn't submit the syntax checking bits on purpose, there's something failing there and I didn't want to check it now. This series seems to work as expected, anyway.