From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=35621 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PyQJN-0004cy-Sr for qemu-devel@nongnu.org; Sat, 12 Mar 2011 10:00:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PyQJM-0004BX-6E for qemu-devel@nongnu.org; Sat, 12 Mar 2011 10:00:57 -0500 Received: from mail-yi0-f45.google.com ([209.85.218.45]:53888) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PyQJM-0004BN-1B for qemu-devel@nongnu.org; Sat, 12 Mar 2011 10:00:56 -0500 Received: by yib19 with SMTP id 19so1843609yib.4 for ; Sat, 12 Mar 2011 07:00:55 -0800 (PST) Message-ID: <4D7B8AA5.6080806@codemonkey.ws> Date: Sat, 12 Mar 2011 09:00:53 -0600 From: Anthony Liguori MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH 01/15] qapi: add code generator for qmp-types (v2) References: <1299884745-521-1-git-send-email-aliguori@us.ibm.com> <1299884745-521-2-git-send-email-aliguori@us.ibm.com> In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Blue Swirl Cc: Anthony Liguori , Markus Armbruster , qemu-devel@nongnu.org, Luiz Capitulino , Avi Kivity , Adam Litke On 03/12/2011 05:29 AM, Blue Swirl wrote: > On Sat, Mar 12, 2011 at 1:05 AM, Anthony Liguori wrote: >> Only generate qmp-types.[ch]. These files contain the type definitions for >> QMP along with the alloc/free functions for these types. Functions to convert >> enum values to integers and vice versa are also included. >> >> qmp-types is used both within QEMU and within libqmp >> >> Special alloc/free functions are provided to ensure that all structures are >> padded when allocated. This makes sure that libqmp can provide a forward >> compatible interface since all additions to a structure will have a boolean >> enable flag. >> >> The free function is convenient since individual structures may have pointers >> that also require freeing. >> >> Signed-off-by: Anthony Liguori >> --- >> v1 -> v2 >> - modify code generator to use multiline strings instead of prints >> - support proxy commands >> - support async commands >> >> diff --git a/Makefile b/Makefile >> index 6b1d716..6b9fd69 100644 >> --- a/Makefile >> +++ b/Makefile >> @@ -4,6 +4,7 @@ GENERATED_HEADERS = config-host.h trace.h qemu-options.def >> ifeq ($(TRACE_BACKEND),dtrace) >> GENERATED_HEADERS += trace-dtrace.h >> endif >> +GENERATED_HEADERS += qmp-types.h >> >> ifneq ($(wildcard config-host.mak),) >> # Put the all: rule here so that config-host.mak can contain dependencies. >> @@ -146,6 +147,14 @@ trace-dtrace.o: trace-dtrace.dtrace $(GENERATED_HEADERS) >> >> simpletrace.o: simpletrace.c $(GENERATED_HEADERS) >> >> +qmp-types.c: $(SRC_PATH)/qmp-schema.json $(SRC_PATH)/qmp-gen.py >> + $(call quiet-command,python $(SRC_PATH)/qmp-gen.py --types-body< $< > $@, " GEN $@") >> + >> +qmp-types.h: $(SRC_PATH)/qmp-schema.json $(SRC_PATH)/qmp-gen.py >> + $(call quiet-command,python $(SRC_PATH)/qmp-gen.py --types-header< $< > $@, " GEN $@") >> + >> +qmp-types.o: qmp-types.c qmp-types.h >> + >> version.o: $(SRC_PATH)/version.rc config-host.mak >> $(call quiet-command,$(WINDRES) -I. -o $@ $<," RC $(TARGET_DIR)$@") >> >> diff --git a/Makefile.objs b/Makefile.objs >> index 69f0383..710d99f 100644 >> --- a/Makefile.objs >> +++ b/Makefile.objs >> @@ -15,7 +15,7 @@ oslib-obj-$(CONFIG_POSIX) += oslib-posix.o >> >> block-obj-y = cutils.o cache-utils.o qemu-malloc.o qemu-option.o module.o >> block-obj-y += nbd.o block.o aio.o aes.o qemu-config.o >> -block-obj-y += error.o >> +block-obj-y += error.o qmp-types.o >> block-obj-$(CONFIG_POSIX) += posix-aio-compat.o >> block-obj-$(CONFIG_LINUX_AIO) += linux-aio.o >> >> diff --git a/ordereddict.py b/ordereddict.py >> new file mode 100644 > Please put this into scripts/. Sure. >> + >> +#include >> +#include >> +#include "error.h" >> + >> +typedef struct QmpSignal QmpSignal; >> +typedef struct QmpCommandState QmpCommandState; >> +typedef struct QmpState QmpState; >> + >> +#define BUILD_ASSERT(cond) do { \ >> + (void)sizeof(int[-1+!!(cond)]); \ > Spaces around '+'. > > This could be useful elsewhere, how about putting it to some generic header? Sure. Regards, Anthony Liguori >> +} while (0) >> + >> +#define BUILD_BUG() BUILD_ASSERT(0) >> + >> +#endif >> -- >> 1.7.0.4 >> >> >>