hbitmap: add hbitmap_merge
commitbe58721dbf882fa8830f3669f499b0a5b501e90f
authorJohn Snow <jsnow@redhat.com>
Fri, 17 Apr 2015 23:49:55 +0000 (17 19:49 -0400)
committerKevin Wolf <kwolf@redhat.com>
Tue, 28 Apr 2015 13:36:10 +0000 (28 15:36 +0200)
tree32499b1555c9e8130a1990392d7ba58eeafb8a84
parent8515efbef1759b9143f06e9722c8f4e145032181
hbitmap: add hbitmap_merge

We add a bitmap merge operation to assist in error cases
where we wish to combine two bitmaps together.

This is algorithmically O(bits) provided HBITMAP_LEVELS remains
constant. For a full bitmap on a 64bit machine:
sum(bits/64^k, k, 0, HBITMAP_LEVELS) ~= 1.01587 * bits

We may be able to improve running speed for particularly sparse
bitmaps by using iterators, but the running time for dense maps
will be worse.

We present the simpler solution first, and we can refine it later
if needed.

Signed-off-by: John Snow <jsnow@redhat.com>
Reviewed-by: Max Reitz <mreitz@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-id: 1429314609-29776-8-git-send-email-jsnow@redhat.com
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
include/qemu/hbitmap.h
util/hbitmap.c