summaryrefslogtreecommitdiff
path: root/hw/core
diff options
context:
space:
mode:
authorMarcel Apfelbaum <marcel.a@redhat.com>2013-10-07 10:36:34 +0300
committerMichael S. Tsirkin <mst@redhat.com>2013-10-14 17:11:44 +0300
commita8a9d30bab2fae2e0ab3436fa0a40d89fbb0cf4e (patch)
tree8557aee9d19c011d9926a83ee77c17a50ffa9f96 /hw/core
parenta53ae8e934cd54686875b5bcfc2f434244ee55d6 (diff)
downloadqemu-a8a9d30bab2fae2e0ab3436fa0a40d89fbb0cf4e.tar.gz
hw/core: Add interface to allocate and free a single IRQ
qemu_allocate_irq returns a single qemu_irq. The interface allows to specify an interrupt number. qemu_free_irq frees it. Signed-off-by: Marcel Apfelbaum <marcel.a@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'hw/core')
-rw-r--r--hw/core/irq.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/hw/core/irq.c b/hw/core/irq.c
index 20785428ef..03c8cb31ea 100644
--- a/hw/core/irq.c
+++ b/hw/core/irq.c
@@ -68,6 +68,17 @@ qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void *opaque, int n)
return qemu_extend_irqs(NULL, 0, handler, opaque, n);
}
+qemu_irq qemu_allocate_irq(qemu_irq_handler handler, void *opaque, int n)
+{
+ struct IRQState *irq;
+
+ irq = g_new(struct IRQState, 1);
+ irq->handler = handler;
+ irq->opaque = opaque;
+ irq->n = n;
+
+ return irq;
+}
void qemu_free_irqs(qemu_irq *s)
{
@@ -75,6 +86,11 @@ void qemu_free_irqs(qemu_irq *s)
g_free(s);
}
+void qemu_free_irq(qemu_irq irq)
+{
+ g_free(irq);
+}
+
static void qemu_notirq(void *opaque, int line, int level)
{
struct IRQState *irq = opaque;