From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42272) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WuEvB-0005Xv-E4 for qemu-devel@nongnu.org; Tue, 10 Jun 2014 01:48:39 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WuEv5-0001b6-Ag for qemu-devel@nongnu.org; Tue, 10 Jun 2014 01:48:33 -0400 Received: from mail-wi0-x22f.google.com ([2a00:1450:400c:c05::22f]:36012) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WuEv4-0001b1-Vo for qemu-devel@nongnu.org; Tue, 10 Jun 2014 01:48:27 -0400 Received: by mail-wi0-f175.google.com with SMTP id f8so5402229wiw.8 for ; Mon, 09 Jun 2014 22:48:26 -0700 (PDT) Sender: Paolo Bonzini Message-ID: <53969C25.7010705@redhat.com> Date: Tue, 10 Jun 2014 07:48:21 +0200 From: Paolo Bonzini MIME-Version: 1.0 References: <1401970944-18735-1-git-send-email-wenchaoqemu@gmail.com> In-Reply-To: <1401970944-18735-1-git-send-email-wenchaoqemu@gmail.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH V6 00/29] add direct support of event in qapi schema List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Wenchao Xia , qemu-devel@nongnu.org Cc: lcapitulino@redhat.com, mdroth@linux.vnet.ibm.com, armbru@redhat.com Il 05/06/2014 14:21, Wenchao Xia ha scritto: > This series add support for tag/keyword 'event' in qapi-schema. > A new file was created to store some helper functions in patch 2, patch 4 is > the test case, patch 5 is a convert example. > > The implemention is done by generate API and a batch of parameters for each > event define, it doesn't generate a struture and visit function in the > background for every event, so it doesn't support nested structure in the > define to avoid trouble. A callback layer is added to control the behavior. > More detail can be found in patch 3's message and incode comments. > > v2: > Address Luiz's comments: > patch 3: rename *err to *local_err, do not initialize *qmp = NULL, create > a new function qmp_build_evet_dict(). > Other change: > reorgnized script in patch 3, it have a clear three steps, see patch 3's > incode comments. > > v3: > Address Luiz's comments: > 2/5: use -1 when fail to get host timestamp. > 3/5: typo fix and better incode comments. all unchanged functions are moved > into qmp-event.c, from generated file. To do so without include issue, 'int' > was used intead of 'enum' in function prototype declaration, since the 'enum' > define is a generated type. > Address Eric's comments: > 2/5: use -1 when fail to get host timestamp. > 3/5: typo fix, add docs/qapi-code-gen.txt. > 4/5: typo fix, verify no other fields in member 'timestamp'. > 5/5: add doc in qapi-schema.json. > fix license, all script using GPL2, all C code use LGPL, just as other > similar files in upstream. > > v4: > Address Eric's comments: > 2/5: typo fix, add copyright declaration, use a static function pointer > instead of a struct in C file, assign -1 in two line of codes to avoid issue > when tv_sec and tv_usec are not in same data width, fix indention. > 3/5: typo fix, add copyright declaration. > 4/5: add copyright declaration, simplify string compare with > "d->result = g_strcmp0(...) == 0;", add check for tv_usec's range and value. > Other: > 3/5: all error check code was moved from qapi-event.py to qapi.py, and it > reports better message with line number info. Added related test case. > Note: > Benoit's series which track input file better seems not the final version, > so I didn't rebase this series ontop for now, will do it once Benoit's ones > get ACKed. > > v5: > Address Eric and Markus's comments: > 2/28: use uint64_t for both sec and usec, to avoid type cast issue in printf. > Other: > Remove RFC, add full coversion by patch 5-28. > 3/28: add prefix for event enum type name, to avoid double define of > QAPIEvent in test code. > > v6: > Address Eric's comments: > 3/29: employ modularization mechnism of schema file of Lluís series, remove > error_is_set() usage. > 4/29: Makefile change for Lluís series. > 5/29: separate patch for refactoring the existing schema defines, improve doc > for @service in VncBasicInfo. > 7/29-28/29: define and convert event caller one by one. > Other change: > 6/29: new way to add event emit implemention. In v5 it breaks old event > mechnism, in v6 it touch nothing of old event mechnism but add a new set of > functions for new event mechnism. > 7/29: Add new file qapi-event.json to store event defines, and all type > defines goes into qapi-schema.json. > 29/29: related clean up change. > Note: > I have no way to verify target-s390x/kvm.c touched by patch 27/29, and > block/quorum.c touched by patch 28/29, need a confirm from whom has the test > env. > > Wenchao Xia (29): > 1 os-posix: include sys/time.h > 2 qapi: add event helper functions > 3 qapi script: add event support > 4 test: add test cases for qapi event > 5 qapi: adjust existing defines > 6 monitor: add an implemention as qapi event emit method > 7 qapi: add new schema file qapi-event.json > 8 qapi event: convert SHUTDOWN > 9 qapi event: convert POWERDOWN > 10 qapi event: convert RESET > 11 qapi event: convert STOP > 12 qapi event: convert RESUME > 13 qapi event: convert SUSPEND > 14 qapi event: convert SUSPEND_DISK > 15 qapi event: convert WAKEUP > 16 qapi event: convert RTC_CHANGE > 17 qapi event: convert WATCHDOG > 18 qapi event: convert DEVICE_DELETED > 19 qapi event: convert DEVICE_TRAY_MOVED > 20 qapi event: convert BLOCK_IO_ERROR and BLOCK_JOB_ERROR > 21 qapi event: convert BLOCK_IMAGE_CORRUPTED > 22 qapi event: convert other BLOCK_JOB events > 23 qapi event: convert NIC_RX_FILTER_CHANGED > 24 qapi event: convert VNC events > 25 qapi event: convert SPICE events > 26 qapi event: convert BALLOON_CHANGE > 27 qapi event: convert GUEST_PANICKED > 28 qapi event: convert QUORUM events > 29 qapi event: clean up > > Makefile | 21 +- > Makefile.objs | 2 +- > balloon.c | 13 - > block.c | 68 +--- > block/backup.c | 2 +- > block/mirror.c | 9 +- > block/qcow2-refcount.c | 14 +- > block/quorum.c | 25 +- > block/stream.c | 4 +- > blockdev.c | 12 +- > blockjob.c | 53 ++-- > cpus.c | 5 +- > docs/qapi-code-gen.txt | 18 + > docs/qmp/qmp-events.txt | 541 ------------------------------ > hmp.c | 5 +- > hw/acpi/core.c | 4 +- > hw/block/virtio-blk.c | 6 +- > hw/core/qdev.c | 12 +- > hw/ide/core.c | 6 +- > hw/misc/pvpanic.c | 13 +- > hw/net/virtio-net.c | 13 +- > hw/ppc/spapr_rtas.c | 3 +- > hw/scsi/scsi-disk.c | 6 +- > hw/timer/mc146818rtc.c | 3 +- > hw/virtio/virtio-balloon.c | 6 +- > hw/watchdog/watchdog.c | 23 +- > include/block/block.h | 4 - > include/block/block_int.h | 3 - > include/block/blockjob.h | 17 +- > include/monitor/monitor.h | 40 --- > include/qapi/qmp-event.h | 27 ++ > include/qemu/sockets.h | 3 +- > include/sysemu/balloon.h | 2 - > include/sysemu/os-posix.h | 2 + > include/sysemu/sysemu.h | 2 - > monitor.c | 185 +++-------- > qapi-event.json | 452 +++++++++++++++++++++++++ > qapi-schema.json | 178 +++++++++-- > qapi/Makefile.objs | 1 + > qapi/qmp-event.c | 74 ++++ > scripts/qapi-event.py | 369 ++++++++++++++++++++ > scripts/qapi.py | 12 + > stubs/Makefile.objs | 1 - > stubs/mon-protocol-event.c | 6 - > target-s390x/kvm.c | 8 +- > tests/Makefile | 18 +- > tests/qapi-schema/event-nest-struct.err | 1 + > tests/qapi-schema/event-nest-struct.exit | 1 + > tests/qapi-schema/event-nest-struct.json | 2 + > tests/qapi-schema/qapi-schema-test.json | 12 + > tests/qapi-schema/qapi-schema-test.out | 10 +- > tests/test-qmp-event.c | 265 +++++++++++++++ > trace-events | 4 + > ui/spice-core.c | 77 +++-- > ui/vnc.c | 120 ++++---- > ui/vnc.h | 4 +- > util/qemu-sockets.c | 10 +- > vl.c | 22 +- > 58 files changed, 1732 insertions(+), 1087 deletions(-) > delete mode 100644 docs/qmp/qmp-events.txt > create mode 100644 include/qapi/qmp-event.h > create mode 100644 qapi-event.json > create mode 100644 qapi/qmp-event.c > create mode 100644 scripts/qapi-event.py > delete mode 100644 stubs/mon-protocol-event.c > create mode 100644 tests/qapi-schema/event-nest-struct.err > create mode 100644 tests/qapi-schema/event-nest-struct.exit > create mode 100644 tests/qapi-schema/event-nest-struct.json > create mode 100644 tests/qapi-schema/event-nest-struct.out > create mode 100644 tests/test-qmp-event.c > > > Tested-by: Paolo Bonzini Unfortunately, this already does not apply anymore. I've placed the rebase on branch qapi-event of my github repository. The resolutions are trivial, so perhaps Luiz or Michael can pull from there? Paolo