From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42091) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VTrxJ-0005VT-Ga for qemu-devel@nongnu.org; Wed, 09 Oct 2013 07:29:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VTrxD-0001IS-Gy for qemu-devel@nongnu.org; Wed, 09 Oct 2013 07:29:29 -0400 Received: from mx1.redhat.com ([209.132.183.28]:5475) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VTrxD-0001IG-8S for qemu-devel@nongnu.org; Wed, 09 Oct 2013 07:29:23 -0400 From: Juan Quintela Date: Wed, 9 Oct 2013 13:28:45 +0200 Message-Id: <1381318130-10620-24-git-send-email-quintela@redhat.com> In-Reply-To: <1381318130-10620-1-git-send-email-quintela@redhat.com> References: <1381318130-10620-1-git-send-email-quintela@redhat.com> Subject: [Qemu-devel] [PATCH 23/28] memory: make cpu_physical_memory_get_dirty() the main function List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: chegu_vinod@hp.com And make cpu_physical_memory_get_dirty_flag() to use it. It used to be the other way around. Signed-off-by: Juan Quintela --- include/exec/memory-internal.h | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/include/exec/memory-internal.h b/include/exec/memory-internal.h index e56f43b..f66d2ce 100644 --- a/include/exec/memory-internal.h +++ b/include/exec/memory-internal.h @@ -40,22 +40,6 @@ void *qemu_get_ram_ptr(ram_addr_t addr); void qemu_ram_free(ram_addr_t addr); void qemu_ram_free_from_ptr(ram_addr_t addr); -static inline bool cpu_physical_memory_get_dirty_flag(ram_addr_t addr, - unsigned client) -{ - assert(client < DIRTY_MEMORY_NUM); - return test_bit(addr >> TARGET_PAGE_BITS, ram_list.dirty_memory[client]); -} - -/* read dirty bit (return 0 or 1) */ -static inline bool cpu_physical_memory_is_dirty(ram_addr_t addr) -{ - bool vga = cpu_physical_memory_get_dirty_flag(addr, DIRTY_MEMORY_VGA); - bool code = cpu_physical_memory_get_dirty_flag(addr, DIRTY_MEMORY_CODE); - bool migration = cpu_physical_memory_get_dirty_flag(addr, DIRTY_MEMORY_MIGRATION); - return vga && code && migration; -} - static inline int cpu_physical_memory_get_dirty(ram_addr_t start, ram_addr_t length, unsigned client) @@ -63,14 +47,31 @@ static inline int cpu_physical_memory_get_dirty(ram_addr_t start, int ret = 0; ram_addr_t addr, end; + assert(client < DIRTY_MEMORY_NUM); + end = TARGET_PAGE_ALIGN(start + length); start &= TARGET_PAGE_MASK; for (addr = start; addr < end; addr += TARGET_PAGE_SIZE) { - ret |= cpu_physical_memory_get_dirty_flag(addr, client); + ret |= test_bit(addr >> TARGET_PAGE_BITS, ram_list.dirty_memory[client]); } return ret; } +static inline bool cpu_physical_memory_get_dirty_flag(ram_addr_t addr, + unsigned client) +{ + return cpu_physical_memory_get_dirty(addr, 1, client); +} + +/* read dirty bit (return 0 or 1) */ +static inline bool cpu_physical_memory_is_dirty(ram_addr_t addr) +{ + bool vga = cpu_physical_memory_get_dirty_flag(addr, DIRTY_MEMORY_VGA); + bool code = cpu_physical_memory_get_dirty_flag(addr, DIRTY_MEMORY_CODE); + bool migration = cpu_physical_memory_get_dirty_flag(addr, DIRTY_MEMORY_MIGRATION); + return vga && code && migration; +} + static inline void cpu_physical_memory_set_dirty_flag(ram_addr_t addr, unsigned client) { -- 1.8.3.1