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 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.