From: Paolo Bonzini <pbonzini@redhat.com>
To: Xuebing Wang <xbing6@gmail.com>, qemu-devel@nongnu.org
Cc: afaerber@suse.de, stefanha@redhat.com
Subject: Re: [Qemu-devel] [Discussion 03/10] NEED_CPU_H: remove unnecessary use of NEED_CPU_H
Date: Tue, 04 Mar 2014 11:20:49 +0100 [thread overview]
Message-ID: <5315A901.2010007@redhat.com> (raw)
In-Reply-To: <1393901250-3922-4-git-send-email-xbing6@gmail.com>
Il 04/03/2014 03:47, Xuebing Wang ha scritto:
> Note: there is a FIXME to be addressed in this patch.
>
> For every appearance of NEED_CPU_H, there must be '#include "cpu.h"' to
> include "target-xxx/cpu.h", because the code below NEED_CPU_H depends on
> architecture-specific information.
>
> Signed-off-by: Xuebing Wang <xbing6@gmail.com>
Here I disagree. I think that if cpu.h is needed by a header, it should
be included by whoever needs that header.
> ---
> include/exec/cpu-common.h | 5 +++++
> include/hw/hw.h | 13 +++++++++----
> include/hw/xen/xen.h | 2 +-
> include/qemu/log.h | 7 ++++---
> include/sysemu/kvm.h | 2 +-
> ui/input.c | 2 --
> 6 files changed, 20 insertions(+), 11 deletions(-)
>
> diff --git a/include/exec/cpu-common.h b/include/exec/cpu-common.h
> index a21b65a..a696667 100644
> --- a/include/exec/cpu-common.h
> +++ b/include/exec/cpu-common.h
> @@ -98,6 +98,11 @@ void stl_be_phys(AddressSpace *as, hwaddr addr, uint32_t val);
> void stq_le_phys(AddressSpace *as, hwaddr addr, uint64_t val);
> void stq_be_phys(AddressSpace *as, hwaddr addr, uint64_t val);
>
> +/*
> + * FIXME: although it's nice to keep ld/st APIs together with above,
> + * below violates the idea that every NEED_CPU_H should be followed
> + * by inclusion of "target-xxx/cpu.h"
> + */
> #ifdef NEED_CPU_H
> uint32_t lduw_phys(AddressSpace *as, hwaddr addr);
> uint32_t ldl_phys(AddressSpace *as, hwaddr addr);
> diff --git a/include/hw/hw.h b/include/hw/hw.h
> index 33bdb92..3accd44 100644
> --- a/include/hw/hw.h
> +++ b/include/hw/hw.h
> @@ -4,7 +4,7 @@
>
> #include "qemu-common.h"
>
> -#if !defined(CONFIG_USER_ONLY) && !defined(NEED_CPU_H)
> +#if !defined(CONFIG_USER_ONLY)
> #include "exec/cpu-common.h"
> #endif
>
> @@ -15,6 +15,8 @@
> #include "qemu/log.h"
>
> #ifdef NEED_CPU_H
> +#include "cpu.h" /* target-xxx/cpu.h, required for TARGET_LONG_BITS */
> +
> #if TARGET_LONG_BITS == 64
> #define qemu_put_betl qemu_put_be64
> #define qemu_get_betl qemu_get_be64
> @@ -34,7 +36,7 @@
> #define qemu_put_sbetls qemu_put_sbe32s
> #define qemu_get_sbetls qemu_get_sbe32s
> #endif
> -#endif
> +#endif /* NEED_CPU_H */
>
> typedef void QEMUResetHandler(void *opaque);
>
> @@ -48,6 +50,8 @@ void qemu_register_boot_set(QEMUBootSetHandler *func, void *opaque);
> int qemu_boot_set(const char *boot_order);
>
> #ifdef NEED_CPU_H
> +#include "cpu.h" /* target-xxx/cpu.h, required for TARGET_LONG_BITS */
> +
> #if TARGET_LONG_BITS == 64
> #define VMSTATE_UINTTL_V(_f, _s, _v) \
> VMSTATE_UINT64_V(_f, _s, _v)
> @@ -63,6 +67,7 @@ int qemu_boot_set(const char *boot_order);
> #define VMSTATE_UINTTL_ARRAY_V(_f, _s, _n, _v) \
> VMSTATE_UINT32_ARRAY_V(_f, _s, _n, _v)
> #endif
> +
> #define VMSTATE_UINTTL(_f, _s) \
> VMSTATE_UINTTL_V(_f, _s, 0)
> #define VMSTATE_UINTTL_EQUAL(_f, _s) \
> @@ -70,6 +75,6 @@ int qemu_boot_set(const char *boot_order);
> #define VMSTATE_UINTTL_ARRAY(_f, _s, _n) \
> VMSTATE_UINTTL_ARRAY_V(_f, _s, _n, 0)
>
> -#endif
> +#endif /* NEED_CPU_H */
>
> -#endif
> +#endif /* QEMU_HW_H */
> diff --git a/include/hw/xen/xen.h b/include/hw/xen/xen.h
> index 34773b9..638817b 100644
> --- a/include/hw/xen/xen.h
> +++ b/include/hw/xen/xen.h
> @@ -40,7 +40,7 @@ int xen_init(void);
> int xen_hvm_init(MemoryRegion **ram_memory);
> void xenstore_store_pv_console_info(int i, struct CharDriverState *chr);
>
> -#if defined(NEED_CPU_H) && !defined(CONFIG_USER_ONLY)
> +#if !defined(CONFIG_USER_ONLY)
> void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size,
> struct MemoryRegion *mr);
> void xen_modified_memory(ram_addr_t start, ram_addr_t length);
> diff --git a/include/qemu/log.h b/include/qemu/log.h
> index d515424..715accb 100644
> --- a/include/qemu/log.h
> +++ b/include/qemu/log.h
> @@ -6,9 +6,7 @@
> #include <stdio.h>
> #include "qemu/compiler.h"
> #include "qom/cpu.h"
> -#ifdef NEED_CPU_H
> #include "disas/disas.h"
> -#endif
>
> /* Private global variables, don't use */
> extern FILE *qemu_logfile;
> @@ -102,6 +100,9 @@ static inline void log_cpu_state_mask(int mask, CPUState *cpu, int flags)
> }
>
> #ifdef NEED_CPU_H
> +#include "cpu.h" /* target-xxx/cpu.h, required for target_ulong,
> + CPUArchState */
> +
> /* disas() and target_disas() to qemu_logfile: */
> static inline void log_target_disas(CPUArchState *env, target_ulong start,
> target_ulong len, int flags)
> @@ -121,7 +122,7 @@ static inline void log_page_dump(void)
> page_dump(qemu_logfile);
> }
> #endif
> -#endif
> +#endif /* NEED_CPU_H */
>
>
> /* Maintenance: */
> diff --git a/include/sysemu/kvm.h b/include/sysemu/kvm.h
> index 112721d..d1e5389 100644
> --- a/include/sysemu/kvm.h
> +++ b/include/sysemu/kvm.h
> @@ -58,7 +58,7 @@ extern bool kvm_gsi_routing_allowed;
> extern bool kvm_gsi_direct_mapping;
> extern bool kvm_readonly_mem_allowed;
>
> -#if defined CONFIG_KVM || !defined NEED_CPU_H
> +#if defined CONFIG_KVM
> #define kvm_enabled() (kvm_allowed)
This is wrong. There are files that do not need cpu.h and need
kvm_enabled().
Paolo
> /**
> * kvm_irqchip_in_kernel:
> diff --git a/ui/input.c b/ui/input.c
> index 1c70f60..b6d216d 100644
> --- a/ui/input.c
> +++ b/ui/input.c
> @@ -187,7 +187,6 @@ static const int key_defs[] = {
>
> [Q_KEY_CODE_INSERT] = 0xd2,
> [Q_KEY_CODE_DELETE] = 0xd3,
> -#ifdef NEED_CPU_H
> #if defined(TARGET_SPARC) && !defined(TARGET_SPARC64)
> [Q_KEY_CODE_STOP] = 0xf0,
> [Q_KEY_CODE_AGAIN] = 0xf1,
> @@ -205,7 +204,6 @@ static const int key_defs[] = {
> [Q_KEY_CODE_META_R] = 0xfd,
> [Q_KEY_CODE_COMPOSE] = 0xfe,
> #endif
> -#endif
> [Q_KEY_CODE_MAX] = 0,
> };
>
>
next prev parent reply other threads:[~2014-03-04 10:21 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-04 2:47 [Qemu-devel] [Discussion 00/10] about API hierarchy Xuebing Wang
2014-03-04 2:47 ` [Qemu-devel] [Discussion 01/10] docs: add docs/api-hierarchy.txt Xuebing Wang
2014-03-04 9:42 ` Stefan Hajnoczi
2014-03-04 9:58 ` Xuebing wang
2014-03-04 11:57 ` Stefan Hajnoczi
2014-03-04 2:47 ` [Qemu-devel] [Discussion 02/10] NEED_CPU_H: remove '#include "cpu.h"' from include/qemu-common.h Xuebing Wang
2014-03-04 10:19 ` Paolo Bonzini
2014-03-04 11:54 ` Xuebing wang
2014-03-04 12:02 ` Xuebing wang
2014-03-04 12:09 ` Paolo Bonzini
2014-03-04 12:09 ` Xuebing wang
2014-03-04 12:34 ` Peter Maydell
2014-03-04 12:40 ` Xuebing wang
2014-03-04 12:19 ` Xuebing wang
2014-03-04 12:23 ` Paolo Bonzini
2014-03-04 12:26 ` Xuebing wang
2014-03-04 12:29 ` Paolo Bonzini
2014-03-04 2:47 ` [Qemu-devel] [Discussion 03/10] NEED_CPU_H: remove unnecessary use of NEED_CPU_H Xuebing Wang
2014-03-04 10:20 ` Paolo Bonzini [this message]
2014-03-04 2:47 ` [Qemu-devel] [Discussion 04/10] memory_mapping: make this architecture-independent Xuebing Wang
2014-03-04 10:22 ` Paolo Bonzini
2014-03-04 11:05 ` Peter Maydell
2014-03-04 2:47 ` [Qemu-devel] [Discussion 05/10] NEED_CPU_H: remove unnecessary inclusion of "cpu.h" in root Xuebing Wang
2014-03-04 10:24 ` Paolo Bonzini
2014-03-04 2:47 ` [Qemu-devel] [Discussion 06/10] memory: move contents in include/exec/address-spaces.h => memory.h Xuebing Wang
2014-03-04 10:26 ` Paolo Bonzini
2014-03-04 2:47 ` [Qemu-devel] [Discussion 07/10] memory: remove file include/exec/address-spaces.h Xuebing Wang
2014-03-04 2:47 ` [Qemu-devel] [Discussion 08/10] exec: move TranslationBlock API from exec-all.h => translate.h Xuebing Wang
2014-03-04 10:27 ` Paolo Bonzini
2014-03-04 2:47 ` [Qemu-devel] [Discussion 09/10] exec: remove the unnecessary include of "exec-all.h" Xuebing Wang
2014-03-04 10:27 ` Paolo Bonzini
2014-03-04 11:11 ` Peter Maydell
2014-03-04 11:16 ` Peter Maydell
2014-03-04 2:47 ` [Qemu-devel] [Discussion 10/10] translate: remove file translate-all.h Xuebing Wang
2014-03-04 10:29 ` Paolo Bonzini
2014-03-04 3:45 ` [Qemu-devel] [Discussion 00/10] about API hierarchy Andreas Färber
2014-03-04 5:37 ` Xuebing wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5315A901.2010007@redhat.com \
--to=pbonzini@redhat.com \
--cc=afaerber@suse.de \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=xbing6@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.