From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:52027) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UliD3-0002WQ-B7 for qemu-devel@nongnu.org; Sun, 09 Jun 2013 12:11:14 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UliD1-0001xq-4n for qemu-devel@nongnu.org; Sun, 09 Jun 2013 12:11:13 -0400 Received: from cantor2.suse.de ([195.135.220.15]:39900 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UliD0-0001xj-RP for qemu-devel@nongnu.org; Sun, 09 Jun 2013 12:11:11 -0400 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Sun, 9 Jun 2013 18:10:47 +0200 Message-Id: <1370794247-28267-19-git-send-email-afaerber@suse.de> In-Reply-To: <1370794247-28267-1-git-send-email-afaerber@suse.de> References: <1370794247-28267-1-git-send-email-afaerber@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH qom-cpu v4 18/18] memory_mapping: Build only once List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: qiaonuohan@cn.fujitsu.com, =?UTF-8?q?Andreas=20F=C3=A4rber?= , lcapitulino@redhat.com Move RAMBlock, RAMList and ram_list to exec/cpu-common.h since they do not depend on CPUArchState. We can then use it together with qom/cpu.h to replace cpu.h and exec/cpu-all.h includes, making it fully target-independent. Signed-off-by: Andreas F=C3=A4rber --- Makefile.objs | 1 + Makefile.target | 1 - include/exec/cpu-all.h | 28 ---------------------------- include/exec/cpu-common.h | 33 +++++++++++++++++++++++++++++++++ include/sysemu/memory_mapping.h | 1 + memory_mapping.c | 4 ++-- 6 files changed, 37 insertions(+), 31 deletions(-) diff --git a/Makefile.objs b/Makefile.objs index 5b288ba..89f28a1 100644 --- a/Makefile.objs +++ b/Makefile.objs @@ -54,6 +54,7 @@ common-obj-y +=3D migration.o migration-tcp.o common-obj-y +=3D qemu-char.o #aio.o common-obj-y +=3D block-migration.o common-obj-y +=3D page_cache.o xbzrle.o +common-obj-y +=3D memory_mapping.o =20 common-obj-$(CONFIG_POSIX) +=3D migration-exec.o migration-unix.o migrat= ion-fd.o =20 diff --git a/Makefile.target b/Makefile.target index b0be124..e73c68b 100644 --- a/Makefile.target +++ b/Makefile.target @@ -109,7 +109,6 @@ obj-y +=3D hw/ obj-$(CONFIG_FDT) +=3D device_tree.o obj-$(CONFIG_KVM) +=3D kvm-all.o obj-y +=3D memory.o savevm.o cputlb.o -obj-y +=3D memory_mapping.o obj-y +=3D dump.o LIBS+=3D$(libs_softmmu) =20 diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h index e9c3717..bd09cd1 100644 --- a/include/exec/cpu-all.h +++ b/include/exec/cpu-all.h @@ -22,7 +22,6 @@ #include "qemu-common.h" #include "qemu/tls.h" #include "exec/cpu-common.h" -#include "qemu/thread.h" =20 /* some important defines: * @@ -465,33 +464,6 @@ extern ram_addr_t ram_size; /* RAM is pre-allocated and passed into qemu_ram_alloc_from_ptr */ #define RAM_PREALLOC_MASK (1 << 0) =20 -typedef struct RAMBlock { - struct MemoryRegion *mr; - uint8_t *host; - ram_addr_t offset; - ram_addr_t length; - uint32_t flags; - char idstr[256]; - /* Reads can take either the iothread or the ramlist lock. - * Writes must take both locks. - */ - QTAILQ_ENTRY(RAMBlock) next; -#if defined(__linux__) && !defined(TARGET_S390X) - int fd; -#endif -} RAMBlock; - -typedef struct RAMList { - QemuMutex mutex; - /* Protected by the iothread lock. */ - uint8_t *phys_dirty; - RAMBlock *mru_block; - /* Protected by the ramlist lock. */ - QTAILQ_HEAD(, RAMBlock) blocks; - uint32_t version; -} RAMList; -extern RAMList ram_list; - extern const char *mem_path; extern int mem_prealloc; =20 diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h index e061e21..0e5c63f 100644 --- a/include/exec/cpu-common.h +++ b/include/exec/cpu-common.h @@ -11,6 +11,7 @@ =20 #include "qemu/bswap.h" #include "qemu/queue.h" +#include "qemu/thread.h" =20 /** * CPUListState: @@ -43,6 +44,38 @@ typedef uintptr_t ram_addr_t; # define RAM_ADDR_FMT "%" PRIxPTR #endif =20 +#if !defined(CONFIG_USER_ONLY) + +typedef struct RAMBlock { + struct MemoryRegion *mr; + uint8_t *host; + ram_addr_t offset; + ram_addr_t length; + uint32_t flags; + char idstr[256]; + /* Reads can take either the iothread or the ramlist lock. + * Writes must take both locks. + */ + QTAILQ_ENTRY(RAMBlock) next; +#if defined(__linux__) && !defined(TARGET_S390X) + int fd; +#endif +} RAMBlock; + +typedef struct RAMList { + QemuMutex mutex; + /* Protected by the iothread lock. */ + uint8_t *phys_dirty; + RAMBlock *mru_block; + /* Protected by the ramlist lock. */ + QTAILQ_HEAD(, RAMBlock) blocks; + uint32_t version; +} RAMList; + +extern RAMList ram_list; + +#endif + /* memory API */ =20 typedef void CPUWriteMemoryFunc(void *opaque, hwaddr addr, uint32_t valu= e); diff --git a/include/sysemu/memory_mapping.h b/include/sysemu/memory_mapp= ing.h index 1411cc7..161cfc3 100644 --- a/include/sysemu/memory_mapping.h +++ b/include/sysemu/memory_mapping.h @@ -16,6 +16,7 @@ =20 #include "qemu/queue.h" #include "qemu/typedefs.h" +#include "qom/cpu.h" =20 /* The physical and virtual address in the memory mapping are contiguous= . */ typedef struct MemoryMapping { diff --git a/memory_mapping.c b/memory_mapping.c index a19be54..446a927 100644 --- a/memory_mapping.c +++ b/memory_mapping.c @@ -11,8 +11,8 @@ * */ =20 -#include "cpu.h" -#include "exec/cpu-all.h" +#include "qemu-common.h" +#include "exec/cpu-common.h" #include "sysemu/memory_mapping.h" =20 static void memory_mapping_list_add_mapping_sorted(MemoryMappingList *li= st, --=20 1.8.1.4