mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-31 14:23:53 -06:00
memory: split dirty bitmap into three
After all the previous patches, spliting the bitmap gets direct. Note: For some reason, I have to move DIRTY_MEMORY_* definitions to the beginning of memory.h to make compilation work. Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Reviewed-by: Orit Wasserman <owasserm@redhat.com>
This commit is contained in:
parent
164590a60f
commit
1ab4c8ceaa
4 changed files with 16 additions and 15 deletions
|
@ -44,7 +44,7 @@ static inline bool cpu_physical_memory_get_dirty_flag(ram_addr_t addr,
|
|||
unsigned client)
|
||||
{
|
||||
assert(client < DIRTY_MEMORY_NUM);
|
||||
return ram_list.phys_dirty[addr >> TARGET_PAGE_BITS] & (1 << client);
|
||||
return test_bit(addr >> TARGET_PAGE_BITS, ram_list.dirty_memory[client]);
|
||||
}
|
||||
|
||||
/* read dirty bit (return 0 or 1) */
|
||||
|
@ -76,7 +76,7 @@ static inline void cpu_physical_memory_set_dirty_flag(ram_addr_t addr,
|
|||
unsigned client)
|
||||
{
|
||||
assert(client < DIRTY_MEMORY_NUM);
|
||||
ram_list.phys_dirty[addr >> TARGET_PAGE_BITS] |= (1 << client);
|
||||
set_bit(addr >> TARGET_PAGE_BITS, ram_list.dirty_memory[client]);
|
||||
}
|
||||
|
||||
static inline void cpu_physical_memory_set_dirty(ram_addr_t addr)
|
||||
|
@ -89,11 +89,8 @@ static inline void cpu_physical_memory_set_dirty(ram_addr_t addr)
|
|||
static inline void cpu_physical_memory_clear_dirty_flag(ram_addr_t addr,
|
||||
unsigned client)
|
||||
{
|
||||
int mask = ~(1 << client);
|
||||
|
||||
assert(client < DIRTY_MEMORY_NUM);
|
||||
|
||||
ram_list.phys_dirty[addr >> TARGET_PAGE_BITS] &= mask;
|
||||
clear_bit(addr >> TARGET_PAGE_BITS, ram_list.dirty_memory[client]);
|
||||
}
|
||||
|
||||
static inline void cpu_physical_memory_set_dirty_range(ram_addr_t start,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue