From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52087) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WvygU-0002A2-Pr for qemu-devel@nongnu.org; Sat, 14 Jun 2014 20:52:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WvygO-000802-Qh for qemu-devel@nongnu.org; Sat, 14 Jun 2014 20:52:34 -0400 Received: from mail-pb0-x235.google.com ([2607:f8b0:400e:c01::235]:55242) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WvygO-0007zu-ER for qemu-devel@nongnu.org; Sat, 14 Jun 2014 20:52:28 -0400 Received: by mail-pb0-f53.google.com with SMTP id uo5so3010593pbc.12 for ; Sat, 14 Jun 2014 17:52:25 -0700 (PDT) Message-ID: <539CEE42.5090906@gmail.com> Date: Sun, 15 Jun 2014 08:52:18 +0800 From: Wenchao Xia MIME-Version: 1.0 References: <1401970944-18735-1-git-send-email-wenchaoqemu@gmail.com> <53969C25.7010705@redhat.com> In-Reply-To: <53969C25.7010705@redhat.com> Content-Type: text/plain; charset=UTF-8; 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: Paolo Bonzini , qemu-devel@nongnu.org Cc: lcapitulino@redhat.com, mdroth@linux.vnet.ibm.com, armbru@redhat.com 于 2014/6/10 13:48, Paolo Bonzini 写道: > 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 Thanks for testing my work:) Eric: I have looked the comments, most fix will arrive in my V7 next week, but still I have two issues without decision: 1. Whether to use QAPIEvent in callback function type declartion, See my feedback in 6/29. 2. Whether to make qapi-event.json self sufficent, see my comments in 17/29.