[libvirt] [PATCH 1/3] util: bitmap: Intoduce self-expanding bitmap APIs
John Ferlan
jferlan at redhat.com
Tue Mar 29 15:12:38 UTC 2016
Doh - I was looking at these while I see Michal posted an ACK series...
so hopefully before you push...
$SUBJ
Introduce
On 03/22/2016 10:00 AM, Peter Krempa wrote:
> In some cases it's impractical to use the regular APIs as the bitmap
> size needs to be pre-declared. These new APIs allow to use bitmaps that
> self expand.
>
> The new code adds a property to the bitmap to track the alocation of
allocation
> memory so that VIR_RESIZE_N can be used.
> ---
> src/libvirt_private.syms | 3 ++
> src/util/virbitmap.c | 93 ++++++++++++++++++++++++++++++++++++++++++++++++
> src/util/virbitmap.h | 8 +++++
> tests/virbitmaptest.c | 51 ++++++++++++++++++++++++++
> 4 files changed, 155 insertions(+)
>
[...]
> diff --git a/tests/virbitmaptest.c b/tests/virbitmaptest.c
> index 967a5c8..92f1e6e 100644
> --- a/tests/virbitmaptest.c
> +++ b/tests/virbitmaptest.c
> @@ -590,6 +590,54 @@ test11(const void *opaque)
> return ret;
> }
>
> +#define TEST_MAP(sz, expect) \
> + do { \
> + char *actual = virBitmapFormat(map); \
> + if (virBitmapSize(map) != sz) { \
> + fprintf(stderr, "\n expected bitmap size: '%d' actual size: " \
> + "'%zu'\n", sz, virBitmapSize(map)); \
According to Coverity, actual can be leaked here...
> + goto cleanup; \
> + } \
> + if (STRNEQ_NULLABLE(expect, actual)) { \
> + fprintf(stderr, "\n expected bitmap contents '%s' actual contents "\
> + "'%s'\n", NULLSTR(expect), NULLSTR(actual)); \
> + VIR_FREE(actual); \
> + goto cleanup; \
> + } \
> + VIR_FREE(actual); \
> + } while (0)
> +
> +/* test self-expanding bitmap APIs */
> +static int
> +test12(const void *opaque ATTRIBUTE_UNUSED)
> +{
> + virBitmapPtr map = NULL;
> + int ret = -1;
> +
> + if (!(map = virBitmapNewEmpty()))
> + return -1;
> +
> + TEST_MAP(0, "");
> +
> + if (virBitmapSetBitExpand(map, 100) < 0)
> + goto cleanup;
> +
> + TEST_MAP(101, "100");
> +
> + if (virBitmapClearBitExpand(map, 150) < 0)
> + goto cleanup;
> +
> + TEST_MAP(151, "100");
> +
> + ret = 0;
> +
> + cleanup:
> + virBitmapFree(map);
> + return ret;
> +}
> +#undef TEST_MAP
> +
> +
John
More information about the libvir-list
mailing list