[libvirt] [RFC PATCH 6/6] tests: Use virBitmap for qemu command line caps

Jiri Denemark jdenemar at redhat.com
Thu Feb 10 14:03:50 UTC 2011


On Wed, Feb 09, 2011 at 10:33:01 -0700, Eric Blake wrote:
> On 02/09/2011 09:02 AM, Jiri Denemark wrote:
> > This needs to be squashed into the previous patch but is provided
> > separately for easier review.
> > ---
> >  src/qemu/qemu_capabilities.c |   14 +
> >  src/qemu/qemu_capabilities.h |    2 +
> >  tests/qemuhelptest.c         |  727 +++++++++++++++++++++---------------------
> >  tests/qemuxml2argvtest.c     |  468 ++++++++++++++--------------
> >  4 files changed, 617 insertions(+), 594 deletions(-)
> > 
> >  void
> > +qemuCapsSetList(virBitmapPtr caps, ...)
> > +{
> > +    va_list list;
> > +    int flag;
> > +
> > +    va_start(list, caps);
> > +    while ((flag = va_arg(list, int)) < QEMU_CAPS_LAST)

This is the bug I was talking about in the previous email. I should rather use
"enum qemuCapsFlags" instead of "int" in case someone passes -fshort-enum
option to gcc which would result in the enum being represented as char rather
than int.

> > +        ignore_value(virBitmapSetBit(caps, flag));
> > +    va_end(list);
> 
> QEMU_CAPS_LAST as a terminal seems a bit awkward.  Would it be any
> better to require 0 to be the terminal?

The problem is that 0 is a valid flag value (QEMU_CAPS_KQEMU) addressing the
lowest bit. We could reserve the value for a terminal but in that case we
could never make use of the lowest bit in the bitmap. Not that it would make a
huge difference but QEMU_CAPS_LAST just seemed good enough to me :-) Also it's
kinda nice to have a call like

    qemuCapsSetList(caps, QEMU_CAPS_1, QEMU_CAPS_2, ..., QEMU_CAPS_LAST)

Jirka




More information about the libvir-list mailing list