mirror of
https://github.com/yuzu-emu/unicorn.git
synced 2025-07-07 19:50:49 +00:00
bitmap: add bitmap_copy_and_clear_atomic
Backports commit d6eb1413920affb7be3df9982682dd183a805dd7 from qemu
This commit is contained in:
parent
b8b70dfcd2
commit
108354cc4a
|
@ -67,6 +67,8 @@ void bitmap_set(unsigned long *map, long i, long len);
|
||||||
void bitmap_set_atomic(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);
|
void bitmap_clear(unsigned long *map, long start, long nr);
|
||||||
bool bitmap_test_and_clear_atomic(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);
|
||||||
|
|
||||||
static inline unsigned long *bitmap_zero_extend(unsigned long *old,
|
static inline unsigned long *bitmap_zero_extend(unsigned long *old,
|
||||||
long old_nbits, long new_nbits)
|
long old_nbits, long new_nbits)
|
||||||
|
|
|
@ -137,3 +137,14 @@ bool bitmap_test_and_clear_atomic(unsigned long *map, long start, long nr)
|
||||||
|
|
||||||
return dirty != 0;
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue