mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-07 17:53:56 -06:00
hbitmap: Add @advance param to hbitmap_iter_next()
This new parameter allows the caller to just query the next dirty position without moving the iterator. Signed-off-by: Max Reitz <mreitz@redhat.com> Reviewed-by: Fam Zheng <famz@redhat.com> Reviewed-by: John Snow <jsnow@redhat.com> Message-id: 20180613181823.13618-8-mreitz@redhat.com Signed-off-by: Max Reitz <mreitz@redhat.com>
This commit is contained in:
parent
ec9f10fe06
commit
a33fbb4f8b
5 changed files with 26 additions and 19 deletions
|
@ -46,7 +46,7 @@ static void hbitmap_test_check(TestHBitmapData *data,
|
|||
|
||||
i = first;
|
||||
for (;;) {
|
||||
next = hbitmap_iter_next(&hbi);
|
||||
next = hbitmap_iter_next(&hbi, true);
|
||||
if (next < 0) {
|
||||
next = data->size;
|
||||
}
|
||||
|
@ -435,25 +435,25 @@ static void test_hbitmap_iter_granularity(TestHBitmapData *data,
|
|||
/* Note that hbitmap_test_check has to be invoked manually in this test. */
|
||||
hbitmap_test_init(data, 131072 << 7, 7);
|
||||
hbitmap_iter_init(&hbi, data->hb, 0);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi), <, 0);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi, true), <, 0);
|
||||
|
||||
hbitmap_test_set(data, ((L2 + L1 + 1) << 7) + 8, 8);
|
||||
hbitmap_iter_init(&hbi, data->hb, 0);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi), ==, (L2 + L1 + 1) << 7);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi), <, 0);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi, true), ==, (L2 + L1 + 1) << 7);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi, true), <, 0);
|
||||
|
||||
hbitmap_iter_init(&hbi, data->hb, (L2 + L1 + 2) << 7);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi), <, 0);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi, true), <, 0);
|
||||
|
||||
hbitmap_test_set(data, (131072 << 7) - 8, 8);
|
||||
hbitmap_iter_init(&hbi, data->hb, 0);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi), ==, (L2 + L1 + 1) << 7);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi), ==, 131071 << 7);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi), <, 0);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi, true), ==, (L2 + L1 + 1) << 7);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi, true), ==, 131071 << 7);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi, true), <, 0);
|
||||
|
||||
hbitmap_iter_init(&hbi, data->hb, (L2 + L1 + 2) << 7);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi), ==, 131071 << 7);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi), <, 0);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi, true), ==, 131071 << 7);
|
||||
g_assert_cmpint(hbitmap_iter_next(&hbi, true), <, 0);
|
||||
}
|
||||
|
||||
static void hbitmap_test_set_boundary_bits(TestHBitmapData *data, ssize_t diff)
|
||||
|
@ -893,7 +893,7 @@ static void test_hbitmap_serialize_zeroes(TestHBitmapData *data,
|
|||
for (i = 0; i < num_positions; i++) {
|
||||
hbitmap_deserialize_zeroes(data->hb, positions[i], min_l1, true);
|
||||
hbitmap_iter_init(&iter, data->hb, 0);
|
||||
next = hbitmap_iter_next(&iter);
|
||||
next = hbitmap_iter_next(&iter, true);
|
||||
if (i == num_positions - 1) {
|
||||
g_assert_cmpint(next, ==, -1);
|
||||
} else {
|
||||
|
@ -919,10 +919,10 @@ static void test_hbitmap_iter_and_reset(TestHBitmapData *data,
|
|||
|
||||
hbitmap_iter_init(&hbi, data->hb, BITS_PER_LONG - 1);
|
||||
|
||||
hbitmap_iter_next(&hbi);
|
||||
hbitmap_iter_next(&hbi, true);
|
||||
|
||||
hbitmap_reset_all(data->hb);
|
||||
hbitmap_iter_next(&hbi);
|
||||
hbitmap_iter_next(&hbi, true);
|
||||
}
|
||||
|
||||
static void test_hbitmap_next_zero_check(TestHBitmapData *data, int64_t start)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue