All of lore.kernel.org
 help / color / mirror / Atom feed
From: Markus Armbruster <armbru@redhat.com>
To: qemu-devel@nongnu.org
Subject: [Qemu-devel] [PATCH 1/6] Move function definitions out of xilinx.h
Date: Fri, 11 Sep 2009 22:19:16 +0200	[thread overview]
Message-ID: <37d5a3ce941bc89f6d73b8e7bf746952a0074da2.1252699478.git.armbru@redhat.com> (raw)
In-Reply-To: <cover.1252699478.git.armbru@redhat.com>

xilinx.h defines a couple of static inline functions for creating
devices.  While that's a fair technique for hot functions, device
initialization is about as cold as it gets.  Define them in the device
source files instead, and keep only declarations in the header.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 hw/xilinx.h         |   58 ++++++++------------------------------------------
 hw/xilinx_ethlite.c |   19 ++++++++++++++++
 hw/xilinx_intc.c    |   14 ++++++++++++
 hw/xilinx_timer.c   |   15 +++++++++++++
 4 files changed, 58 insertions(+), 48 deletions(-)

diff --git a/hw/xilinx.h b/hw/xilinx.h
index 070679c..ea91be1 100644
--- a/hw/xilinx.h
+++ b/hw/xilinx.h
@@ -1,50 +1,12 @@
+#ifndef XILINX_H
+#define XILINX_H
 
-/* OPB Interrupt Controller.  */
 qemu_irq *microblaze_pic_init_cpu(CPUState *env);
-
-static inline DeviceState *
-xilinx_intc_create(target_phys_addr_t base, qemu_irq irq, int kind_of_intr)
-{
-    DeviceState *dev;
-
-    dev = qdev_create(NULL, "xilinx,intc");
-    qdev_prop_set_uint32(dev, "kind-of-intr", kind_of_intr);
-    qdev_init(dev);
-    sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
-    sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
-    return dev;
-}
-
-/* OPB Timer/Counter.  */
-static inline DeviceState *
-xilinx_timer_create(target_phys_addr_t base, qemu_irq irq, int nr, int freq)
-{
-    DeviceState *dev;
-
-    dev = qdev_create(NULL, "xilinx,timer");
-    qdev_prop_set_uint32(dev, "nr-timers", nr);
-    qdev_prop_set_uint32(dev, "frequency", freq);
-    qdev_init(dev);
-    sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
-    sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
-    return dev;
-}
-
-/* XPS Ethernet Lite MAC.  */
-static inline DeviceState *
-xilinx_ethlite_create(NICInfo *nd, target_phys_addr_t base, qemu_irq irq,
-                      int txpingpong, int rxpingpong)
-{
-    DeviceState *dev;
-
-    qemu_check_nic_model(nd, "xilinx-ethlite");
-
-    dev = qdev_create(NULL, "xilinx,ethlite");
-    dev->nd = nd;
-    qdev_prop_set_uint32(dev, "txpingpong", txpingpong);
-    qdev_prop_set_uint32(dev, "rxpingpong", rxpingpong);
-    qdev_init(dev);
-    sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
-    sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
-    return dev;
-}
+DeviceState *xilinx_intc_create(target_phys_addr_t base, qemu_irq irq,
+                                int kind_of_intr);
+DeviceState *xilinx_timer_create(target_phys_addr_t base, qemu_irq irq,
+                                 int nr, int freq);
+DeviceState *xilinx_ethlite_create(NICInfo *nd, target_phys_addr_t base,
+        qemu_irq irq, int txpingpong, int rxpingpong);
+
+#endif
diff --git a/hw/xilinx_ethlite.c b/hw/xilinx_ethlite.c
index 9b0074c..1710149 100644
--- a/hw/xilinx_ethlite.c
+++ b/hw/xilinx_ethlite.c
@@ -25,6 +25,7 @@
 #include "sysbus.h"
 #include "hw.h"
 #include "net.h"
+#include "xilinx.h"
 
 #define D(x)
 #define R_TX_BUF0     0
@@ -201,6 +202,24 @@ static ssize_t eth_rx(VLANClientState *vc, const uint8_t *buf, size_t size)
     return size;
 }
 
+DeviceState *
+xilinx_ethlite_create(NICInfo *nd, target_phys_addr_t base, qemu_irq irq,
+                      int txpingpong, int rxpingpong)
+{
+    DeviceState *dev;
+
+    qemu_check_nic_model(nd, "xilinx-ethlite");
+
+    dev = qdev_create(NULL, "xilinx,ethlite");
+    dev->nd = nd;
+    qdev_prop_set_uint32(dev, "txpingpong", txpingpong);
+    qdev_prop_set_uint32(dev, "rxpingpong", rxpingpong);
+    qdev_init(dev);
+    sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
+    sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
+    return dev;
+}
+
 static void eth_cleanup(VLANClientState *vc)
 {
     struct xlx_ethlite *s = vc->opaque;
diff --git a/hw/xilinx_intc.c b/hw/xilinx_intc.c
index 8ef6474..dfb8442 100644
--- a/hw/xilinx_intc.c
+++ b/hw/xilinx_intc.c
@@ -24,6 +24,7 @@
 
 #include "sysbus.h"
 #include "hw.h"
+#include "xilinx.h"
 
 #define D(x)
 
@@ -145,6 +146,19 @@ static void irq_handler(void *opaque, int irq, int level)
     update_irq(p);
 }
 
+DeviceState *
+xilinx_intc_create(target_phys_addr_t base, qemu_irq irq, int kind_of_intr)
+{
+    DeviceState *dev;
+
+    dev = qdev_create(NULL, "xilinx,intc");
+    qdev_prop_set_uint32(dev, "kind-of-intr", kind_of_intr);
+    qdev_init(dev);
+    sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
+    sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
+    return dev;
+}
+
 static int xilinx_intc_init(SysBusDevice *dev)
 {
     struct xlx_pic *p = FROM_SYSBUS(typeof (*p), dev);
diff --git a/hw/xilinx_timer.c b/hw/xilinx_timer.c
index e2d9541..26df4b0 100644
--- a/hw/xilinx_timer.c
+++ b/hw/xilinx_timer.c
@@ -25,6 +25,7 @@
 #include "sysbus.h"
 #include "sysemu.h"
 #include "qemu-timer.h"
+#include "xilinx.h"
 
 #define D(x)
 
@@ -189,6 +190,20 @@ static void timer_hit(void *opaque)
     timer_update_irq(t);
 }
 
+DeviceState *
+xilinx_timer_create(target_phys_addr_t base, qemu_irq irq, int nr, int freq)
+{
+    DeviceState *dev;
+
+    dev = qdev_create(NULL, "xilinx,timer");
+    qdev_prop_set_uint32(dev, "nr-timers", nr);
+    qdev_prop_set_uint32(dev, "frequency", freq);
+    qdev_init(dev);
+    sysbus_mmio_map(sysbus_from_qdev(dev), 0, base);
+    sysbus_connect_irq(sysbus_from_qdev(dev), 0, irq);
+    return dev;
+}
+
 static int xilinx_timer_init(SysBusDevice *dev)
 {
     struct timerblock *t = FROM_SYSBUS(typeof (*t), dev);
-- 
1.6.2.5

  reply	other threads:[~2009-09-11 20:19 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-11 20:19 [Qemu-devel] [PATCH 0/6] Clean up use of qdev_init() Markus Armbruster
2009-09-11 20:19 ` Markus Armbruster [this message]
2009-09-12  6:04   ` [Qemu-devel] [PATCH 1/6] Move function definitions out of xilinx.h Blue Swirl
2009-09-12 10:10     ` Edgar E. Iglesias
2009-09-14  8:57       ` Gerd Hoffmann
2009-09-14  9:15         ` Edgar E. Iglesias
2009-09-14 16:18           ` Blue Swirl
2009-09-14 18:59             ` Markus Armbruster
2009-09-14 19:24               ` Blue Swirl
2009-09-11 20:19 ` [Qemu-devel] [PATCH 2/6] Make qdev_init() destroy the device on failure Markus Armbruster
2009-09-11 20:19 ` [Qemu-devel] [PATCH 3/6] Check return value of qdev_init() Markus Armbruster
2009-09-11 20:19 ` [Qemu-devel] [PATCH 4/6] New qdev_init_nofail() Markus Armbruster
2009-09-11 20:19 ` [Qemu-devel] [PATCH 5/6] Make isa_create() terminate program on failure Markus Armbruster
2009-09-11 20:19 ` [Qemu-devel] [PATCH 6/6] Warn if value of qdev_init() isn't checked Markus Armbruster
2009-09-14  8:43 ` [Qemu-devel] [PATCH 0/6] Clean up use of qdev_init() Gerd Hoffmann

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=37d5a3ce941bc89f6d73b8e7bf746952a0074da2.1252699478.git.armbru@redhat.com \
    --to=armbru@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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.