From: "Michael S. Tsirkin" <mst@redhat.com>
To: Isaku Yamahata <yamahata@valinux.co.jp>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 8/9] pci_host.h: split non-inline static function in pci_host.h into pci_host_c.h
Date: Wed, 30 Sep 2009 13:47:07 +0200 [thread overview]
Message-ID: <20090930114707.GJ18802@redhat.com> (raw)
In-Reply-To: <1247656509-32227-9-git-send-email-yamahata@valinux.co.jp>
On Wed, Jul 15, 2009 at 08:15:08PM +0900, Isaku Yamahata wrote:
> Later a structures declared in pci_host.h, PCIHostState, will be used.
> However pci_host.h doesn't allow to include itself easily. This patches
> addresses it.
>
> pci_host.h includes non-inline static functions which are instantiated
> in .c by including pci_host.h. That prevents from including pci_host.h
> to use PCIHostState.
> So split pci_host.h non-inline static functions into pci_host_c.h.
This is quite ugly. We need to split the users properly, and put c in a
.c file, not in an _c.h file. If you can't do that now, just mark the
extra stuff inline, compiler can ignore it.
> Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp>
> ---
> hw/apb_pci.c | 2 +-
> hw/grackle_pci.c | 2 +-
> hw/gt64xxx.c | 2 +-
> hw/pci_host.h | 88 +-------------------------------------
> hw/{pci_host.h => pci_host_c.h} | 8 +---
> hw/piix_pci.c | 2 +-
> hw/ppc4xx_pci.c | 2 +-
> hw/ppce500_pci.c | 2 +-
> hw/prep_pci.c | 2 +-
> hw/unin_pci.c | 2 +-
> 10 files changed, 12 insertions(+), 100 deletions(-)
> copy hw/{pci_host.h => pci_host_c.h} (96%)
>
> diff --git a/hw/apb_pci.c b/hw/apb_pci.c
> index 5f411aa..9732159 100644
> --- a/hw/apb_pci.c
> +++ b/hw/apb_pci.c
> @@ -40,7 +40,7 @@ do { printf("APB: " fmt , ## __VA_ARGS__); } while (0)
> #endif
>
> typedef target_phys_addr_t pci_addr_t;
> -#include "pci_host.h"
> +#include "pci_host_c.h"
>
> typedef PCIHostState APBState;
>
> diff --git a/hw/grackle_pci.c b/hw/grackle_pci.c
> index fde9fea..87ab1b4 100644
> --- a/hw/grackle_pci.c
> +++ b/hw/grackle_pci.c
> @@ -38,7 +38,7 @@
> #endif
>
> typedef target_phys_addr_t pci_addr_t;
> -#include "pci_host.h"
> +#include "pci_host_c.h"
>
> typedef PCIHostState GrackleState;
>
> diff --git a/hw/gt64xxx.c b/hw/gt64xxx.c
> index 3b44fc9..b3da0fa 100644
> --- a/hw/gt64xxx.c
> +++ b/hw/gt64xxx.c
> @@ -28,7 +28,7 @@
> #include "pc.h"
>
> typedef target_phys_addr_t pci_addr_t;
> -#include "pci_host.h"
> +#include "pci_host_c.h"
>
> //#define DEBUG
>
> diff --git a/hw/pci_host.h b/hw/pci_host.h
> index 48862b5..9f272a7 100644
> --- a/hw/pci_host.h
> +++ b/hw/pci_host.h
> @@ -25,97 +25,15 @@
> /* Worker routines for a PCI host controller that uses an {address,data}
> register pair to access PCI configuration space. */
>
> -/* debug PCI */
> -//#define DEBUG_PCI
> +#ifndef PCI_HOST_H
> +#define PCI_HOST_H
>
> #include "sysbus.h"
>
> -#ifdef DEBUG_PCI
> -#define PCI_DPRINTF(fmt, ...) \
> -do { printf("pci_host_data: " fmt , ## __VA_ARGS__); } while (0)
> -#else
> -#define PCI_DPRINTF(fmt, ...)
> -#endif
> -
> typedef struct {
> SysBusDevice busdev;
> uint32_t config_reg;
> PCIBus *bus;
> } PCIHostState;
>
> -static void pci_host_data_writeb(void* opaque, pci_addr_t addr, uint32_t val)
> -{
> - PCIHostState *s = opaque;
> -
> - PCI_DPRINTF("writeb addr " TARGET_FMT_plx " val %x\n",
> - (target_phys_addr_t)addr, val);
> - if (s->config_reg & (1u << 31))
> - pci_data_write(s->bus, s->config_reg | (addr & 3), val, 1);
> -}
> -
> -static void pci_host_data_writew(void* opaque, pci_addr_t addr, uint32_t val)
> -{
> - PCIHostState *s = opaque;
> -#ifdef TARGET_WORDS_BIGENDIAN
> - val = bswap16(val);
> -#endif
> - PCI_DPRINTF("writew addr " TARGET_FMT_plx " val %x\n",
> - (target_phys_addr_t)addr, val);
> - if (s->config_reg & (1u << 31))
> - pci_data_write(s->bus, s->config_reg | (addr & 3), val, 2);
> -}
> -
> -static void pci_host_data_writel(void* opaque, pci_addr_t addr, uint32_t val)
> -{
> - PCIHostState *s = opaque;
> -#ifdef TARGET_WORDS_BIGENDIAN
> - val = bswap32(val);
> -#endif
> - PCI_DPRINTF("writel addr " TARGET_FMT_plx " val %x\n",
> - (target_phys_addr_t)addr, val);
> - if (s->config_reg & (1u << 31))
> - pci_data_write(s->bus, s->config_reg, val, 4);
> -}
> -
> -static uint32_t pci_host_data_readb(void* opaque, pci_addr_t addr)
> -{
> - PCIHostState *s = opaque;
> - uint32_t val;
> -
> - if (!(s->config_reg & (1 << 31)))
> - return 0xff;
> - val = pci_data_read(s->bus, s->config_reg | (addr & 3), 1);
> - PCI_DPRINTF("readb addr " TARGET_FMT_plx " val %x\n",
> - (target_phys_addr_t)addr, val);
> - return val;
> -}
> -
> -static uint32_t pci_host_data_readw(void* opaque, pci_addr_t addr)
> -{
> - PCIHostState *s = opaque;
> - uint32_t val;
> - if (!(s->config_reg & (1 << 31)))
> - return 0xffff;
> - val = pci_data_read(s->bus, s->config_reg | (addr & 3), 2);
> - PCI_DPRINTF("readw addr " TARGET_FMT_plx " val %x\n",
> - (target_phys_addr_t)addr, val);
> -#ifdef TARGET_WORDS_BIGENDIAN
> - val = bswap16(val);
> -#endif
> - return val;
> -}
> -
> -static uint32_t pci_host_data_readl(void* opaque, pci_addr_t addr)
> -{
> - PCIHostState *s = opaque;
> - uint32_t val;
> - if (!(s->config_reg & (1 << 31)))
> - return 0xffffffff;
> - val = pci_data_read(s->bus, s->config_reg | (addr & 3), 4);
> - PCI_DPRINTF("readl addr " TARGET_FMT_plx " val %x\n",
> - (target_phys_addr_t)addr, val);
> -#ifdef TARGET_WORDS_BIGENDIAN
> - val = bswap32(val);
> -#endif
> - return val;
> -}
> +#endif /* PCI_HOST_H */
> diff --git a/hw/pci_host.h b/hw/pci_host_c.h
> similarity index 96%
> copy from hw/pci_host.h
> copy to hw/pci_host_c.h
> index 48862b5..fcd7e6e 100644
> --- a/hw/pci_host.h
> +++ b/hw/pci_host_c.h
> @@ -28,7 +28,7 @@
> /* debug PCI */
> //#define DEBUG_PCI
>
> -#include "sysbus.h"
> +#include "pci_host.h"
>
> #ifdef DEBUG_PCI
> #define PCI_DPRINTF(fmt, ...) \
> @@ -37,12 +37,6 @@ do { printf("pci_host_data: " fmt , ## __VA_ARGS__); } while (0)
> #define PCI_DPRINTF(fmt, ...)
> #endif
>
> -typedef struct {
> - SysBusDevice busdev;
> - uint32_t config_reg;
> - PCIBus *bus;
> -} PCIHostState;
> -
> static void pci_host_data_writeb(void* opaque, pci_addr_t addr, uint32_t val)
> {
> PCIHostState *s = opaque;
> diff --git a/hw/piix_pci.c b/hw/piix_pci.c
> index a5d42d1..e67a7dd 100644
> --- a/hw/piix_pci.c
> +++ b/hw/piix_pci.c
> @@ -28,7 +28,7 @@
> #include "sysbus.h"
>
> typedef uint32_t pci_addr_t;
> -#include "pci_host.h"
> +#include "pci_host_c.h"
>
> typedef PCIHostState I440FXState;
>
> diff --git a/hw/ppc4xx_pci.c b/hw/ppc4xx_pci.c
> index 87c44f8..27ea87e 100644
> --- a/hw/ppc4xx_pci.c
> +++ b/hw/ppc4xx_pci.c
> @@ -26,7 +26,7 @@
>
> typedef target_phys_addr_t pci_addr_t;
> #include "pci.h"
> -#include "pci_host.h"
> +#include "pci_host_c.h"
> #include "bswap.h"
>
> #undef DEBUG
> diff --git a/hw/ppce500_pci.c b/hw/ppce500_pci.c
> index 1a8a6c9..9258524 100644
> --- a/hw/ppce500_pci.c
> +++ b/hw/ppce500_pci.c
> @@ -19,7 +19,7 @@
> #include "ppce500.h"
> typedef target_phys_addr_t pci_addr_t;
> #include "pci.h"
> -#include "pci_host.h"
> +#include "pci_host_c.h"
> #include "bswap.h"
> #include "qemu-log.h"
>
> diff --git a/hw/prep_pci.c b/hw/prep_pci.c
> index 80058b1..7051417 100644
> --- a/hw/prep_pci.c
> +++ b/hw/prep_pci.c
> @@ -26,7 +26,7 @@
> #include "pci.h"
>
> typedef uint32_t pci_addr_t;
> -#include "pci_host.h"
> +#include "pci_host_c.h"
>
> typedef PCIHostState PREPPCIState;
>
> diff --git a/hw/unin_pci.c b/hw/unin_pci.c
> index 0ad0cd3..4d44008 100644
> --- a/hw/unin_pci.c
> +++ b/hw/unin_pci.c
> @@ -36,7 +36,7 @@
> #endif
>
> typedef target_phys_addr_t pci_addr_t;
> -#include "pci_host.h"
> +#include "pci_host_c.h"
>
> typedef PCIHostState UNINState;
>
> --
> 1.6.0.2
>
>
next prev parent reply other threads:[~2009-09-30 11:49 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-15 11:15 [Qemu-devel] [PATCH 0/9] pci: pcie host and mmcfg support Isaku Yamahata
2009-07-15 11:15 ` [Qemu-devel] [PATCH 1/9] pci: fix PCI_DPRINTF() wrt variadic macro Isaku Yamahata
2009-09-30 11:36 ` Michael S. Tsirkin
2009-07-15 11:15 ` [Qemu-devel] [PATCH 2/9] pci.c: use appropriate PRIs in PCI_DPRINTF() Isaku Yamahata
2009-09-30 11:37 ` Michael S. Tsirkin
2009-09-30 11:58 ` Michael S. Tsirkin
2009-07-15 11:15 ` [Qemu-devel] [PATCH 3/9] pci: define a constant to represent a unmapped bar and use it Isaku Yamahata
2009-09-30 11:37 ` Michael S. Tsirkin
2009-07-15 11:15 ` [Qemu-devel] [PATCH 4/9] pci: use uint64_t for bar addr and size instead of uint32_t Isaku Yamahata
2009-09-30 11:41 ` Michael S. Tsirkin
2009-09-30 15:25 ` malc
2009-09-30 16:15 ` Michael S. Tsirkin
2009-09-30 16:51 ` malc
2009-09-30 17:26 ` Michael S. Tsirkin
2009-09-30 17:59 ` malc
2009-10-01 5:33 ` Michael S. Tsirkin
2009-10-01 12:15 ` malc
2009-10-01 12:26 ` Michael S. Tsirkin
2009-10-01 12:45 ` malc
2009-10-01 13:54 ` Anthony Liguori
2009-10-01 18:46 ` malc
2009-10-01 23:41 ` Jamie Lokier
2009-10-01 3:44 ` Isaku Yamahata
2009-07-15 11:15 ` [Qemu-devel] [PATCH 5/9] pci: 64bit bar support Isaku Yamahata
2009-09-30 11:43 ` Michael S. Tsirkin
2009-10-06 9:33 ` Michael S. Tsirkin
2009-07-15 11:15 ` [Qemu-devel] [PATCH 6/9] pci.c: factor out while(bus) bus->next loop logic into pci_find_bus_from() Isaku Yamahata
2009-09-30 11:45 ` Michael S. Tsirkin
2009-10-01 3:29 ` Isaku Yamahata
2009-10-01 6:28 ` Michael S. Tsirkin
2009-10-01 7:00 ` Isaku Yamahata
2009-10-01 7:14 ` Michael S. Tsirkin
2009-10-01 11:24 ` Gerd Hoffmann
2009-07-15 11:15 ` [Qemu-devel] [PATCH 7/9] pci: factor out the logic to get pci device from address Isaku Yamahata
2009-09-30 11:30 ` Michael S. Tsirkin
2009-10-01 3:59 ` Isaku Yamahata
2009-07-15 11:15 ` [Qemu-devel] [PATCH 8/9] pci_host.h: split non-inline static function in pci_host.h into pci_host_c.h Isaku Yamahata
2009-09-30 11:47 ` Michael S. Tsirkin [this message]
2009-10-01 4:13 ` Isaku Yamahata
2009-07-15 11:15 ` [Qemu-devel] [PATCH 9/9] [RFC] pci: pcie host and mmcfg support Isaku Yamahata
2009-10-06 9:32 ` Michael S. Tsirkin
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=20090930114707.GJ18802@redhat.com \
--to=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=yamahata@valinux.co.jp \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).