qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel]  [PATCH 04/29] Introduce QDict
@ 2015-09-12  0:22 Programmingkid
  2015-09-12  4:10 ` Luiz Capitulino
  0 siblings, 1 reply; 9+ messages in thread
From: Programmingkid @ 2015-09-12  0:22 UTC (permalink / raw)
  To: lcapitulino; +Cc: qemu-devel qemu-devel, qemu-discuss

Could you make a tutorial on how to use the QDict type?

^ permalink raw reply	[flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH v3 00/29] QMonitor
@ 2009-08-28 18:27 Luiz Capitulino
  2009-08-28 18:27 ` [Qemu-devel] [PATCH 04/29] Introduce QDict Luiz Capitulino
  0 siblings, 1 reply; 9+ messages in thread
From: Luiz Capitulino @ 2009-08-28 18:27 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, avi

 Hi there,

 Another respin, the most important change being a rebase against
latest push bomb.

 Please review, as it's easy to make mistakes on conflict fixes.

 Changelog, description and diffstat follows.

changelog
---------

V2 -> V3

- Rebase against latest master
- Updated configure changes to new style (Juan's advice)

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            |    5 +
 check-qdict.c       |  365 ++++
 check-qint.c        |  110 ++
 check-qstring.c     |  100 +
 configure           |   31 +
 console.h           |    3 +-
 hw/pci-hotplug.c    |   15 +-
 migration.c         |   12 +-
 migration.h         |    9 +-
 monitor.c           |  457 +++---
 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           |  109 ++
 qstring.c           |   73 +
 qstring.h           |   15 +
 savevm.c            |    6 +-
 sysemu.h            |   15 +-
 vl.c                |   11 +-
 25 files changed, 6578 insertions(+), 326 deletions(-)

^ permalink raw reply	[flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH v2 00/29] QMonitor
@ 2009-08-26 17:05 Luiz Capitulino
  2009-08-26 17:05 ` [Qemu-devel] [PATCH 04/29] Introduce QDict Luiz Capitulino
  0 siblings, 1 reply; 9+ messages in thread
From: Luiz Capitulino @ 2009-08-26 17:05 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, avi

 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(-)

^ permalink raw reply	[flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH v1 00/29] QMonitor
@ 2009-08-19 23:07 Luiz Capitulino
  2009-08-19 23:07 ` [Qemu-devel] [PATCH 04/29] Introduce QDict Luiz Capitulino
  0 siblings, 1 reply; 9+ messages in thread
From: Luiz Capitulino @ 2009-08-19 23:07 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, avi

 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(-)

^ permalink raw reply	[flat|nested] 9+ messages in thread
* [Qemu-devel] [PATCH v0 00/29] QMonitor
@ 2009-08-13 13:49 Luiz Capitulino
  2009-08-13 13:50 ` [Qemu-devel] [PATCH 04/29] Introduce QDict Luiz Capitulino
  0 siblings, 1 reply; 9+ messages in thread
From: Luiz Capitulino @ 2009-08-13 13:49 UTC (permalink / raw)
  To: qemu-devel; +Cc: aliguori, avi

 Hi there,

 This is a new version of the 'monitor handlers new structure' work.
As the series is very different from my last submission I've renamed it
to QMonitor.

 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             |  300 +++
 qdict.h             |   47 +
 qemu-monitor.hx     |  109 +-
 qint.c              |   81 +
 qint.h              |   27 +
 qobject.h           |   98 +
 qstring.c           |   62 +
 qstring.h           |   23 +
 savevm.c            |   13 +-
 sysemu.h            |   18 +-
 vl.c                |   13 +-
 25 files changed, 6616 insertions(+), 326 deletions(-)

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2015-09-12 12:08 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-09-12  0:22 [Qemu-devel] [PATCH 04/29] Introduce QDict Programmingkid
2015-09-12  4:10 ` Luiz Capitulino
2015-09-12 12:08   ` Programmingkid
  -- strict thread matches above, loose matches on Subject: below --
2009-08-28 18:27 [Qemu-devel] [PATCH v3 00/29] QMonitor Luiz Capitulino
2009-08-28 18:27 ` [Qemu-devel] [PATCH 04/29] Introduce QDict Luiz Capitulino
2009-08-26 17:05 [Qemu-devel] [PATCH v2 00/29] QMonitor Luiz Capitulino
2009-08-26 17:05 ` [Qemu-devel] [PATCH 04/29] Introduce QDict Luiz Capitulino
2009-08-19 23:07 [Qemu-devel] [PATCH v1 00/29] QMonitor Luiz Capitulino
2009-08-19 23:07 ` [Qemu-devel] [PATCH 04/29] Introduce QDict Luiz Capitulino
2009-08-24 15:40   ` Markus Armbruster
2009-08-24 16:11     ` Luiz Capitulino
2009-08-13 13:49 [Qemu-devel] [PATCH v0 00/29] QMonitor Luiz Capitulino
2009-08-13 13:50 ` [Qemu-devel] [PATCH 04/29] Introduce QDict Luiz Capitulino

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).