[libvirt] [PATCH v3 2/9] New functions for virBitmap

Daniel P. Berrange berrange at redhat.com
Thu Sep 13 13:35:03 UTC 2012


On Thu, Sep 13, 2012 at 02:03:20PM +0800, Hu Tao wrote:
> In many places we store bitmap info in a chunk of data
> (pointed to by a char *), and have redundant codes to
> set/unset bits. This patch extends virBitmap, and convert
> those codes to use virBitmap in subsequent patches.
> ---
>  .gitignore               |    1 +
>  src/libvirt_private.syms |   11 ++
>  src/util/bitmap.c        |  405 +++++++++++++++++++++++++++++++++++++++++++++-
>  src/util/bitmap.h        |   34 ++++
>  tests/Makefile.am        |    7 +-
>  tests/virbitmaptest.c    |  362 +++++++++++++++++++++++++++++++++++++++++
>  6 files changed, 818 insertions(+), 2 deletions(-)
>  create mode 100644 tests/virbitmaptest.c
> 
> diff --git a/.gitignore b/.gitignore
> index d998f0e..1ca537e 100644
> --- a/.gitignore
> +++ b/.gitignore
> @@ -157,6 +157,7 @@
>  /tests/utiltest
>  /tests/viratomictest
>  /tests/virauthconfigtest
> +/tests/virbitmaptest
>  /tests/virbuftest
>  /tests/virdrivermoduletest
>  /tests/virhashtest
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index 8dfb4ce..0ad6376 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -7,12 +7,23 @@
>  
>  # bitmap.h
>  virBitmapAlloc;
> +virBitmapAllocFromData;

Hmm, can you rename the existing method 'virBitmapNew' and
then call you addition 'virBitmapNewData'


> +/**
> + * virBitmapCopy:

s/Copy/NewCopy/

> + * @src: the source bitmap.
> + *
> + * Makes a copy of bitmap @src.
> + *
> + * returns the copied bitmap on success, or NULL otherwise. Caller
> + * should call virBitmapFree to free the returned bitmap.
> + */
> +virBitmapPtr virBitmapNewCopy(virBitmapPtr src)
> +{
> +    virBitmapPtr dst;
> +
> +    if ((dst = virBitmapAlloc(src->max_bit)) == NULL)
> +        return NULL;
> +
> +    if (virBitmapCopy(dst, src) != 0) {
> +        virBitmapFree(dst);
> +        return NULL;
> +    }
> +
> +    return dst;
> +}
> +
> +/**
> + * virBitmapAllocFromData:
> + * @data: the data
> + * @len: length of @data in bytes
> + *
> + * Allocate a bitmap from a chunk of data containing bits
> + * information
> + *
> + * Returns a pointer to the allocated bitmap or NULL if
> + * memory cannot be allocated.
> + */
> +virBitmapPtr virBitmapAllocFromData(void *data, int len)

s/AllocFromData/NewData/

> +{
> +    virBitmapPtr bitmap;
> +    int i;
> +
> +    bitmap = virBitmapAlloc(len * CHAR_BIT);
> +    if (!bitmap)
> +        return NULL;
> +
> +    memcpy(bitmap->map, data, len);
> +    for (i = 0; i < bitmap->map_len; i++)
> +        bitmap->map[i] = le64toh(bitmap->map[i]);
> +
> +    return bitmap;
> +}


ACK if those few renames are made


Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list