All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: qemu-devel@nongnu.org
Cc: Michael Roth <mdroth@linux.vnet.ibm.com>,
	Luiz Capitulino <lcapitulino@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 0/8] OptsVisitor: support / flatten integer ranges for repeating options
Date: Fri, 16 Aug 2013 09:15:51 +0200	[thread overview]
Message-ID: <520DD1A7.5090005@redhat.com> (raw)
In-Reply-To: <1374527256-27631-1-git-send-email-lersek@redhat.com>

Ping then, for 1.7 :)

(Don't stone me, I don't have the slightest clue about the 1.7 backlog.
I'm fine with this being tacked to the end, just don't let it fall
through the cracks.)

Thanks
Laszlo

On 07/22/13 23:07, Laszlo Ersek wrote:
> rfc->v1:
> - addressed Paolo's comments for patches 1 and 2,
> - patches 7 and 8 are new (unit tests),
> - updated the cover letter to take native lists into account, plus
>   cleaned it up.
> 
> Consider the following QAPI schema fragment, for the purpose of command
> line parsing with OptsVisitor:
> 
>   { 'union': 'NumaOptions',
>     'data': {
>       'node': 'NumaNodeOptions',
>       'mem' : 'NumaMemOptions' }}
> 
>   { 'type': 'NumaNodeOptions',
>     'data': {
>       '*nodeid': 'int',
>       '*cpus'  : ['uint16'] }}
> 
>   { 'type': 'NumaMemOptions',
>     'data': {
>       '*nodeid': 'int',
>       '*size'  : 'size' }}
> 
> (Commit eb7ee2cb ("qapi: introduce OptsVisitor") had originally
> documented OptsVisitor's general schema requirements for parsing
> repeated options such that the list element type had to be a struct with
> one mandatory scalar field. Accordingly, the RFC version of this series
> required for interval flattening that this underlying scalar type be an
> integer type. However, since commit a678e26c ("qapi: pad GenericList
> value fields to 64 bits") we've had reliable native lists; OptsVisitor
> turns out to support them automatically.)
> 
> OptsVisitor already accepts the following command line with the above
> schema:
> 
>   -numa node,nodeid=3,cpus=0,cpus=1,cpus=2,cpus=6,cpus=7,cpus=8
> 
> Paolo suggested in
> <http://thread.gmane.org/gmane.comp.emulators.qemu/222589/focus=222732>
> that OptsVisitor should allow the following shortcut:
> 
>   -numa node,nodeid=3,cpus=0-2,cpus=6-8
> 
> and that the code processing the "cpus" list should encounter all six
> elements (0, 1, 2, 6, 7, 8) individually.
> 
> The series implements this feature. Both signed and unsigned values and
> intervals are supported in general:
> 
>   * 0     (zero)
>   * 1-5   (one to five)
>   * 4-4   (four to four, range with one element)
>   * -2    (minus two)
>   * -5-8  (minus five to plus eight)
>   * -9--6 (minus nine to minus six)
> 
> The restrictions imposed by the native list element's signedness and
> size (in the above schema example, 'uint16') are enforced element-wise
> as usual. That is, for 'uint16', the command line option
> 
>   -numa node,nodeid=3,cpus=65534-65537
> 
> is equivalent to
> 
>   -numa node,nodeid=3,cpus=65534,cpus=65535,cpus=65536,cpus=65537
> 
> and visit_type_uint16() [qapi/qapi-visit-core.c] will catch the first
> element (= 65536) that has been parsed by opts_type_int() but cannot be
> represented as 'uint16'.
> 
> Laszlo Ersek (8):
>   OptsVisitor: introduce basic list modes
>   OptsVisitor: introduce list modes for interval flattening
>   OptsVisitor: opts_type_int(): recognize intervals when LM_IN_PROGRESS
>   OptsVisitor: rebase opts_type_uint64() to parse_uint_full()
>   OptsVisitor: opts_type_uint64(): recognize intervals when
>     LM_IN_PROGRESS
>   OptsVisitor: don't try to flatten overlong integer ranges
>   add "test-int128" to .gitignore
>   OptsVisitor: introduce unit tests, with test cases for range
>     flattening
> 
>  tests/Makefile              |    6 +-
>  qapi-schema-test.json       |   15 +++
>  include/qapi/opts-visitor.h |    6 +
>  qapi/opts-visitor.c         |  184 ++++++++++++++++++++++++-----
>  tests/test-opts-visitor.c   |  275 +++++++++++++++++++++++++++++++++++++++++++
>  .gitignore                  |    2 +
>  6 files changed, 456 insertions(+), 32 deletions(-)
>  create mode 100644 tests/test-opts-visitor.c
> 
> 

      parent reply	other threads:[~2013-08-16  7:13 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-22 21:07 [Qemu-devel] [PATCH 0/8] OptsVisitor: support / flatten integer ranges for repeating options Laszlo Ersek
2013-07-22 21:07 ` [Qemu-devel] [PATCH 1/8] OptsVisitor: introduce basic list modes Laszlo Ersek
2013-07-22 21:07 ` [Qemu-devel] [PATCH 2/8] OptsVisitor: introduce list modes for interval flattening Laszlo Ersek
2013-07-22 21:07 ` [Qemu-devel] [PATCH 3/8] OptsVisitor: opts_type_int(): recognize intervals when LM_IN_PROGRESS Laszlo Ersek
2013-07-22 21:07 ` [Qemu-devel] [PATCH 4/8] OptsVisitor: rebase opts_type_uint64() to parse_uint_full() Laszlo Ersek
2013-07-22 21:07 ` [Qemu-devel] [PATCH 5/8] OptsVisitor: opts_type_uint64(): recognize intervals when LM_IN_PROGRESS Laszlo Ersek
2013-07-22 21:07 ` [Qemu-devel] [PATCH 6/8] OptsVisitor: don't try to flatten overlong integer ranges Laszlo Ersek
2013-07-22 21:07 ` [Qemu-devel] [PATCH 7/8] add "test-int128" to .gitignore Laszlo Ersek
2013-07-22 21:07 ` [Qemu-devel] [PATCH 8/8] OptsVisitor: introduce unit tests, with test cases for range flattening Laszlo Ersek
2013-07-22 22:04   ` Eric Blake
2013-07-22 22:24     ` Laszlo Ersek
2013-07-22 22:26       ` Eric Blake
2013-07-22 22:37         ` Laszlo Ersek
2013-08-19 19:26   ` Luiz Capitulino
2013-08-19 19:55     ` Laszlo Ersek
2013-08-19 20:04       ` Laszlo Ersek
2013-07-29  9:47 ` [Qemu-devel] [PATCH 0/8] OptsVisitor: support / flatten integer ranges for repeating options Laszlo Ersek
2013-07-29 11:01   ` Paolo Bonzini
2013-07-29 11:11     ` Wanlong Gao
2013-07-29 11:30       ` Laszlo Ersek
2013-08-16  7:15 ` Laszlo Ersek [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=520DD1A7.5090005@redhat.com \
    --to=lersek@redhat.com \
    --cc=lcapitulino@redhat.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.