From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=48457 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OEfN8-00058K-Hu for qemu-devel@nongnu.org; Wed, 19 May 2010 05:15:30 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OEfN3-0001Gs-Pm for qemu-devel@nongnu.org; Wed, 19 May 2010 05:15:26 -0400 Received: from david.siemens.de ([192.35.17.14]:18825) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OEfN3-0001Fx-5e for qemu-devel@nongnu.org; Wed, 19 May 2010 05:15:21 -0400 Message-ID: <4BF3AC24.8050401@siemens.com> Date: Wed, 19 May 2010 11:15:16 +0200 From: Jan Kiszka MIME-Version: 1.0 References: <1274232769-11160-1-git-send-email-lcapitulino@redhat.com> <1274232769-11160-3-git-send-email-lcapitulino@redhat.com> In-Reply-To: <1274232769-11160-3-git-send-email-lcapitulino@redhat.com> Content-Type: text/plain; charset=ISO-8859-1 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: Luiz Capitulino Cc: "armbru@redhat.com" , "aliguori@us.ibm.com" , "qemu-devel@nongnu.org" , "avi@redhat.com" 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. Jan -- Siemens AG, Corporate Technology, CT T DE IT 1 Corporate Competence Center Embedded Linux