[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 1/3] irq: Add new function qemu_init_irqs
From: |
Stefan Weil |
Subject: |
[Qemu-devel] [PATCH 1/3] irq: Add new function qemu_init_irqs |
Date: |
Mon, 24 Sep 2012 21:08:48 +0200 |
It is used to avoid dynamic memory allocation for qemu_irq arrays
with known size or single qemu_irq variables.
Signed-off-by: Stefan Weil <address@hidden>
---
hw/irq.c | 15 +++++++++------
hw/irq.h | 4 ++++
2 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/hw/irq.c b/hw/irq.c
index d413a0b..fd284b0 100644
--- a/hw/irq.c
+++ b/hw/irq.c
@@ -38,14 +38,11 @@ void qemu_set_irq(qemu_irq irq, int level)
irq->handler(irq->opaque, irq->n, level);
}
-qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void *opaque, int n)
+void qemu_init_irqs(qemu_irq_handler handler, void *opaque,
+ qemu_irq *s, int n)
{
- qemu_irq *s;
- struct IRQState *p;
int i;
-
- s = (qemu_irq *)g_malloc0(sizeof(qemu_irq) * n);
- p = (struct IRQState *)g_malloc0(sizeof(struct IRQState) * n);
+ struct IRQState *p = g_new0(struct IRQState, n);
for (i = 0; i < n; i++) {
p->handler = handler;
p->opaque = opaque;
@@ -53,6 +50,12 @@ qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void
*opaque, int n)
s[i] = p;
p++;
}
+}
+
+qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void *opaque, int n)
+{
+ qemu_irq *s = g_new(qemu_irq, n);
+ qemu_init_irqs(handler, opaque, s, n);
return s;
}
diff --git a/hw/irq.h b/hw/irq.h
index 56c55f0..368b88f 100644
--- a/hw/irq.h
+++ b/hw/irq.h
@@ -23,6 +23,10 @@ static inline void qemu_irq_pulse(qemu_irq irq)
qemu_set_irq(irq, 0);
}
+/* Initialize an array of N IRQs. */
+void qemu_init_irqs(qemu_irq_handler handler, void *opaque,
+ qemu_irq *irqs, int n);
+
/* Returns an array of N IRQs. */
qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void *opaque, int n);
void qemu_free_irqs(qemu_irq *s);
--
1.7.10