Loading include/qemu/bitmap.h +2 −0 Original line number Diff line number Diff line Loading @@ -220,6 +220,8 @@ void bitmap_set(unsigned long *map, long i, long len); void bitmap_set_atomic(unsigned long *map, long i, long len); void bitmap_clear(unsigned long *map, long start, long nr); bool bitmap_test_and_clear_atomic(unsigned long *map, long start, long nr); void bitmap_copy_and_clear_atomic(unsigned long *dst, unsigned long *src, long nr); unsigned long bitmap_find_next_zero_area(unsigned long *map, unsigned long size, unsigned long start, Loading util/bitmap.c +11 −0 Original line number Diff line number Diff line Loading @@ -287,6 +287,17 @@ bool bitmap_test_and_clear_atomic(unsigned long *map, long start, long nr) return dirty != 0; } void bitmap_copy_and_clear_atomic(unsigned long *dst, unsigned long *src, long nr) { while (nr > 0) { *dst = atomic_xchg(src, 0); dst++; src++; nr -= BITS_PER_LONG; } } #define ALIGN_MASK(x,mask) (((x)+(mask))&~(mask)) /** Loading Loading
include/qemu/bitmap.h +2 −0 Original line number Diff line number Diff line Loading @@ -220,6 +220,8 @@ void bitmap_set(unsigned long *map, long i, long len); void bitmap_set_atomic(unsigned long *map, long i, long len); void bitmap_clear(unsigned long *map, long start, long nr); bool bitmap_test_and_clear_atomic(unsigned long *map, long start, long nr); void bitmap_copy_and_clear_atomic(unsigned long *dst, unsigned long *src, long nr); unsigned long bitmap_find_next_zero_area(unsigned long *map, unsigned long size, unsigned long start, Loading
util/bitmap.c +11 −0 Original line number Diff line number Diff line Loading @@ -287,6 +287,17 @@ bool bitmap_test_and_clear_atomic(unsigned long *map, long start, long nr) return dirty != 0; } void bitmap_copy_and_clear_atomic(unsigned long *dst, unsigned long *src, long nr) { while (nr > 0) { *dst = atomic_xchg(src, 0); dst++; src++; nr -= BITS_PER_LONG; } } #define ALIGN_MASK(x,mask) (((x)+(mask))&~(mask)) /** Loading