From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MgLwx-0002oN-2I for qemu-devel@nongnu.org; Wed, 26 Aug 2009 13:06:19 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MgLws-0002fx-BE for qemu-devel@nongnu.org; Wed, 26 Aug 2009 13:06:18 -0400 Received: from [199.232.76.173] (port=45793 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MgLws-0002fj-6v for qemu-devel@nongnu.org; Wed, 26 Aug 2009 13:06:14 -0400 Received: from mx1.redhat.com ([209.132.183.28]:46686) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MgLwr-0000cv-9d for qemu-devel@nongnu.org; Wed, 26 Aug 2009 13:06:13 -0400 From: Luiz Capitulino Date: Wed, 26 Aug 2009 14:05:23 -0300 Message-Id: <1251306352-31316-1-git-send-email-lcapitulino@redhat.com> Subject: [Qemu-devel] [PATCH v2 00/29] QMonitor List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: aliguori@us.ibm.com, avi@redhat.com Hi there, This new version of the QMonitor series has more simplifications, renames and improvements. Most changes are because of simplifications on QInt, please review carefully its implementation and usage. Changelog, description and diffstat follows. changelog --------- V1 -> V2 - Renamed some macros to be more OOP-like - New refcounts terminology by Paulo Bonzini - QDict: o use sys-queue for the linked list o replace qdict_add() by qdict_put() o rename qdict_exists() to qdict_haskey() o add qdict_get_try_int() and qdict_get_try_str() - QInt o drop 'export' functions o rename qint_from_int64() to qint_from_int() - Other small changes V0 -> V1 - Make QType structs const - New macros: QOBJECT_INIT(), QDECREF()/QINCREF(), QType_HEAD - qobject_to_*() should return NULL if type doesn't match description ------------ Basically, this series introduces high-level data types (QInt, QString, QDict) and port all Monitor command handlers to use them to receive arguments. The following points should be observed: o Object life cycle management: I'm using refcouting for this o QString's get: QString exports a function called qstring_get_str(), this function returns a *pointer* to the stored string. A better API would return a copy instead, but it would be too much work and error-prone to go over all handlers and put a qemu_free() in the right place. Handlers only want quick and read-only access to strings anyway, so returning a pointer makes handlers' code a lot simpler. o unit-testing: I have written unit-tests for all the new code and have an off-tree suite for the Monitor's parsing code. I was in doubt if I should submit this work... I did, but it's in the end of the series, if people don't like this it can be easily dropped. Monitor's suite is not in the series because I couldn't make it build "in tree". While reviewing the series is important to bear in mind that all my design decisions were based on the need of the current and most important users of the API: monitor command handlers. Thanks for reading this all! :) Makefile | 8 + check-qdict.c | 365 ++++ check-qint.c | 110 ++ check-qstring.c | 100 + configure | 32 + console.h | 3 +- hw/pci-hotplug.c | 15 +- migration.c | 12 +- migration.h | 9 +- monitor.c | 448 +++--- monitor.h | 1 + net.c | 25 +- net.h | 13 +- qdict-test-data.txt | 4999 +++++++++++++++++++++++++++++++++++++++++++++++++++ qdict.c | 297 +++ qdict.h | 42 + qemu-monitor.hx | 109 +- qint.c | 66 + qint.h | 16 + qobject.h | 111 ++ qstring.c | 73 + qstring.h | 15 + savevm.c | 13 +- sysemu.h | 18 +- vl.c | 13 +- 25 files changed, 6587 insertions(+), 326 deletions(-)