[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v1 00/29] QMonitor
From: |
Luiz Capitulino |
Subject: |
[Qemu-devel] [PATCH v1 00/29] QMonitor |
Date: |
Wed, 19 Aug 2009 20:07:31 -0300 |
Hi there,
This is a new version of my QMonitor series, it has some simplifications
and changes suggested by Avi.
Changelog and full introduction follow.
changelog
---------
V0 -> V1
- Make QType structs const
- New macros: QOBJECT_INIT(), QDECREF()/QINCREF(), QType_HEAD
- qobject_to_*() should return NULL if type doesn't match
introduction
------------
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 and have adopted Python's
approach, this means that you only do refcount when needed, more info here:
http://docs.python.org/c-api/intro.html#objects-types-and-reference-counts
This approach makes command handlers code simpler.
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 | 347 ++++
check-qint.c | 124 ++
check-qstring.c | 100 +
configure | 32 +
console.h | 3 +-
hw/pci-hotplug.c | 15 +-
migration.c | 12 +-
migration.h | 9 +-
monitor.c | 463 +++---
monitor.h | 1 +
net.c | 25 +-
net.h | 13 +-
qdict-test-data.txt | 4999 +++++++++++++++++++++++++++++++++++++++++++++++++++
qdict.c | 311 ++++
qdict.h | 40 +
qemu-monitor.hx | 109 +-
qint.c | 92 +
qint.h | 20 +
qobject.h | 113 ++
qstring.c | 73 +
qstring.h | 16 +
savevm.c | 13 +-
sysemu.h | 18 +-
vl.c | 13 +-
25 files changed, 6643 insertions(+), 326 deletions(-)
- [Qemu-devel] [PATCH v1 00/29] QMonitor,
Luiz Capitulino <=
[Qemu-devel] Re: [PATCH 01/29] Introduce QObject, Paolo Bonzini, 2009/08/20
[Qemu-devel] [PATCH 02/29] Introduce QInt, Luiz Capitulino, 2009/08/19