mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-02-01 17:35:17 +00:00
util: Add a helper to check if all bits of a bitmap are clear
This commit is contained in:
parent
d4bf0a9378
commit
1acfc171da
@ -1046,6 +1046,7 @@ virBitmapEqual;
|
||||
virBitmapFormat;
|
||||
virBitmapFree;
|
||||
virBitmapGetBit;
|
||||
virBitmapIsAllClear;
|
||||
virBitmapIsAllSet;
|
||||
virBitmapNew;
|
||||
virBitmapNewCopy;
|
||||
|
@ -590,6 +590,23 @@ bool virBitmapIsAllSet(virBitmapPtr bitmap)
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* virBitmapIsAllClear:
|
||||
* @bitmap: the bitmap to check
|
||||
*
|
||||
* check if all bits in @bitmap are clear
|
||||
*/
|
||||
bool virBitmapIsAllClear(virBitmapPtr bitmap)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < bitmap->map_len; i++)
|
||||
if (bitmap->map[i] != 0)
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* virBitmapNextSetBit:
|
||||
* @bitmap: the bitmap
|
||||
|
@ -100,6 +100,9 @@ void virBitmapClearAll(virBitmapPtr bitmap)
|
||||
bool virBitmapIsAllSet(virBitmapPtr bitmap)
|
||||
ATTRIBUTE_NONNULL(1);
|
||||
|
||||
bool virBitmapIsAllClear(virBitmapPtr bitmap)
|
||||
ATTRIBUTE_NONNULL(1);
|
||||
|
||||
ssize_t virBitmapNextSetBit(virBitmapPtr bitmap, ssize_t pos)
|
||||
ATTRIBUTE_NONNULL(1);
|
||||
|
||||
|
@ -125,6 +125,8 @@ static int test2(const void *data ATTRIBUTE_UNUSED)
|
||||
goto error;
|
||||
|
||||
virBitmapClearAll(bitmap);
|
||||
if (!virBitmapIsAllClear(bitmap))
|
||||
goto error;
|
||||
if (testBit(bitmap, 0, size - 1, false) < 0)
|
||||
goto error;
|
||||
if (virBitmapCountBits(bitmap) != 0)
|
||||
@ -154,6 +156,9 @@ static int test3(const void *data ATTRIBUTE_UNUSED)
|
||||
if (!virBitmapIsAllSet(bitmap))
|
||||
goto error;
|
||||
|
||||
virBitmapClearAll(bitmap);
|
||||
if (!virBitmapIsAllClear(bitmap))
|
||||
goto error;
|
||||
ret = 0;
|
||||
|
||||
error:
|
||||
@ -196,6 +201,9 @@ static int test4(const void *data ATTRIBUTE_UNUSED)
|
||||
if (virBitmapNextClearBit(bitmap, i) != -1)
|
||||
goto error;
|
||||
|
||||
if (!virBitmapIsAllClear(bitmap))
|
||||
goto error;
|
||||
|
||||
virBitmapFree(bitmap);
|
||||
bitmap = NULL;
|
||||
|
||||
@ -406,6 +414,10 @@ static int test7(const void *v ATTRIBUTE_UNUSED)
|
||||
if (!virBitmapIsAllSet(bitmap))
|
||||
goto error;
|
||||
|
||||
virBitmapClearAll(bitmap);
|
||||
if (!virBitmapIsAllClear(bitmap))
|
||||
goto error;
|
||||
|
||||
virBitmapFree(bitmap);
|
||||
}
|
||||
|
||||
@ -416,6 +428,30 @@ error:
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int test8(const void *v ATTRIBUTE_UNUSED)
|
||||
{
|
||||
virBitmapPtr bitmap = NULL;
|
||||
char data[108] = {0x00,};
|
||||
|
||||
bitmap = virBitmapNewData(data, sizeof(data));
|
||||
if (!bitmap)
|
||||
goto error;
|
||||
|
||||
if (!virBitmapIsAllClear(bitmap))
|
||||
goto error;
|
||||
|
||||
if (virBitmapSetBit(bitmap, 11) < 0)
|
||||
goto error;
|
||||
|
||||
if (virBitmapIsAllClear(bitmap))
|
||||
goto error;
|
||||
|
||||
return 0;
|
||||
error:
|
||||
virBitmapFree(bitmap);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int
|
||||
mymain(void)
|
||||
{
|
||||
@ -435,7 +471,8 @@ mymain(void)
|
||||
ret = -1;
|
||||
if (virtTestRun("test7", 1, test7, NULL) < 0)
|
||||
ret = -1;
|
||||
|
||||
if (virtTestRun("test8", 1, test8, NULL) < 0)
|
||||
ret = -1;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user