On 09/14/2012 03:46 AM, Hu Tao wrote: > Add a new member variable map_len to store map len of bitmap. > and rename size to max_bit accordingly. > > rename virBitmapAlloc to virBitmapNew. > --- > src/conf/domain_conf.c | 2 +- > src/conf/snapshot_conf.c | 2 +- > src/libvirt_private.syms | 2 +- > src/qemu/qemu_capabilities.c | 2 +- > src/qemu/qemu_driver.c | 2 +- > src/util/bitmap.c | 30 +++++++++++++----------------- > src/util/bitmap.h | 2 +- > tools/virsh-domain.c | 2 +- > 8 files changed, 20 insertions(+), 24 deletions(-) > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index 292cc9a..3a44432 100644 > --- a/src/conf/domain_conf.c > +++ b/src/conf/domain_conf.c > @@ -8871,7 +8871,7 @@ static virDomainDefPtr virDomainDefParseXML(virCapsPtr caps, > if (STREQ(def->os.type, "hvm")) { > if (virDomainDefParseBootXML(ctxt, def, &bootMapSize) < 0) > goto error; > - if (bootMapSize && !(bootMap = virBitmapAlloc(bootMapSize))) > + if (bootMapSize && !(bootMap = virBitmapNew(bootMapSize))) > goto no_memory; > } > > diff --git a/src/conf/snapshot_conf.c b/src/conf/snapshot_conf.c > index e13cdd6..ba5b188 100644 > --- a/src/conf/snapshot_conf.c > +++ b/src/conf/snapshot_conf.c > @@ -357,7 +357,7 @@ virDomainSnapshotAlignDisks(virDomainSnapshotDefPtr def, > goto cleanup; > } > > - if (!(map = virBitmapAlloc(def->dom->ndisks))) { > + if (!(map = virBitmapNew(def->dom->ndisks))) { > virReportOOMError(); > goto cleanup; > } > diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms > index 8dfb4ce..557fa0e 100644 > --- a/src/libvirt_private.syms > +++ b/src/libvirt_private.syms > @@ -6,11 +6,11 @@ > # > > # bitmap.h > -virBitmapAlloc; > virBitmapClearBit; > virBitmapCopy; > virBitmapFree; > virBitmapGetBit; > +virBitmapNew; > virBitmapSetBit; > virBitmapString; > > diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c > index ed85b6f..cf9de69 100644 > --- a/src/qemu/qemu_capabilities.c > +++ b/src/qemu/qemu_capabilities.c > @@ -1649,7 +1649,7 @@ qemuCapsNew(void) > { > virBitmapPtr caps; > > - if (!(caps = virBitmapAlloc(QEMU_CAPS_LAST))) > + if (!(caps = virBitmapNew(QEMU_CAPS_LAST))) > virReportOOMError(); > > return caps; > diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c > index a410521..7a8b475 100644 > --- a/src/qemu/qemu_driver.c > +++ b/src/qemu/qemu_driver.c > @@ -696,7 +696,7 @@ qemudStartup(int privileged) { > * do this before the config is loaded properly, since the port > * numbers are configurable now */ > if ((qemu_driver->reservedRemotePorts = > - virBitmapAlloc(qemu_driver->remotePortMax - qemu_driver->remotePortMin)) == NULL) > + virBitmapNew(qemu_driver->remotePortMax - qemu_driver->remotePortMin)) == NULL) > goto out_of_memory; > > /* We should always at least have the 'nop' manager, so > diff --git a/src/util/bitmap.c b/src/util/bitmap.c > index cd52802..dc9c28a 100644 > --- a/src/util/bitmap.c > +++ b/src/util/bitmap.c > @@ -36,7 +36,8 @@ > > > struct _virBitmap { > - size_t size; > + size_t max_bit; > + size_t map_len; > unsigned long *map; > }; > > @@ -48,7 +49,7 @@ struct _virBitmap { > > > /** > - * virBitmapAlloc: > + * virBitmapNew: > * @size: number of bits > * > * Allocate a bitmap capable of containing @size bits. > @@ -56,7 +57,7 @@ struct _virBitmap { > * Returns a pointer to the allocated bitmap or NULL if > * memory cannot be allocated. > */ > -virBitmapPtr virBitmapAlloc(size_t size) > +virBitmapPtr virBitmapNew(size_t size) > { > virBitmapPtr bitmap; > size_t sz; > @@ -75,7 +76,8 @@ virBitmapPtr virBitmapAlloc(size_t size) > return NULL; > } > > - bitmap->size = size; > + bitmap->max_bit = size; > + bitmap->map_len = sz; > return bitmap; > } > > @@ -83,7 +85,7 @@ virBitmapPtr virBitmapAlloc(size_t size) > * virBitmapFree: > * @bitmap: previously allocated bitmap > * > - * Free @bitmap previously allocated by virBitmapAlloc. > + * Free @bitmap previously allocated by virBitmapNew. > */ > void virBitmapFree(virBitmapPtr bitmap) > { > @@ -96,17 +98,12 @@ void virBitmapFree(virBitmapPtr bitmap) > > int virBitmapCopy(virBitmapPtr dst, virBitmapPtr src) > { > - size_t sz; > - > - if (dst->size != src->size) { > + if (dst->max_bit != src->max_bit) { > errno = EINVAL; > return -1; > } > > - sz = (src->size + VIR_BITMAP_BITS_PER_UNIT - 1) / > - VIR_BITMAP_BITS_PER_UNIT; > - > - memcpy(dst->map, src->map, sz * sizeof(src->map[0])); > + memcpy(dst->map, src->map, src->map_len * sizeof(src->map[0])); > > return 0; > } > @@ -123,7 +120,7 @@ int virBitmapCopy(virBitmapPtr dst, virBitmapPtr src) > */ > int virBitmapSetBit(virBitmapPtr bitmap, size_t b) > { > - if (bitmap->size <= b) > + if (bitmap->max_bit <= b) > return -1; > > bitmap->map[VIR_BITMAP_UNIT_OFFSET(b)] |= VIR_BITMAP_BIT(b); > @@ -141,7 +138,7 @@ int virBitmapSetBit(virBitmapPtr bitmap, size_t b) > */ > int virBitmapClearBit(virBitmapPtr bitmap, size_t b) > { > - if (bitmap->size <= b) > + if (bitmap->max_bit <= b) > return -1; > > bitmap->map[VIR_BITMAP_UNIT_OFFSET(b)] &= ~VIR_BITMAP_BIT(b); > @@ -161,7 +158,7 @@ int virBitmapClearBit(virBitmapPtr bitmap, size_t b) > */ > int virBitmapGetBit(virBitmapPtr bitmap, size_t b, bool *result) > { > - if (bitmap->size <= b) > + if (bitmap->max_bit <= b) > return -1; > > *result = !!(bitmap->map[VIR_BITMAP_UNIT_OFFSET(b)] & VIR_BITMAP_BIT(b)); > @@ -183,8 +180,7 @@ char *virBitmapString(virBitmapPtr bitmap) > > virBufferAddLit(&buf, "0x"); > > - sz = (bitmap->size + VIR_BITMAP_BITS_PER_UNIT - 1) / > - VIR_BITMAP_BITS_PER_UNIT; > + sz = bitmap->map_len; > > while (sz--) { > virBufferAsprintf(&buf, "%0*lx", > diff --git a/src/util/bitmap.h b/src/util/bitmap.h > index 1d8750e..2609509 100644 > --- a/src/util/bitmap.h > +++ b/src/util/bitmap.h > @@ -34,7 +34,7 @@ typedef virBitmap *virBitmapPtr; > /* > * Allocate a bitmap capable of containing @size bits. > */ > -virBitmapPtr virBitmapAlloc(size_t size) ATTRIBUTE_RETURN_CHECK; > +virBitmapPtr virBitmapNew(size_t size) ATTRIBUTE_RETURN_CHECK; > > /* > * Free previously allocated bitmap > diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c > index c6695b3..a7d6c37 100644 > --- a/tools/virsh-domain.c > +++ b/tools/virsh-domain.c > @@ -7178,7 +7178,7 @@ vshNodeIsSuperset(xmlNodePtr n1, xmlNodePtr n2) > if (n1_child_size == 0 && n2_child_size == 0) > return true; > > - if (!(bitmap = virBitmapAlloc(n1_child_size))) { > + if (!(bitmap = virBitmapNew(n1_child_size))) { > virReportOOMError(); > return false; > } I had to apply the following small patch to get a successful build with libxl enabled. I'll be pushing with that change squashed in as soon as I've completed make check on the rest of the series. diff --git a/src/libxl/libxl_driver.c b/src/libxl/libxl_driver.c index 1638314..eccae29 100644 --- a/src/libxl/libxl_driver.c +++ b/src/libxl/libxl_driver.c @@ -869,7 +869,7 @@ libxlStartup(int privileged) { /* Allocate bitmap for vnc port reservation */ if ((libxl_driver->reservedVNCPorts = - virBitmapAlloc(LIBXL_VNC_PORT_MAX - LIBXL_VNC_PORT_MIN)) == NULL) + virBitmapNew(LIBXL_VNC_PORT_MAX - LIBXL_VNC_PORT_MIN)) == NULL) goto out_of_memory; if (virDomainObjListInit(&libxl_driver->domains) < 0) -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list