summary refs log tree commit diff stats
path: root/hw/core/irq.c
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/irq.c
parenta53ae8e934cd54686875b5bcfc2f434244ee55d6 (diff)
downloadfocaccia-qemu-a8a9d30bab2fae2e0ab3436fa0a40d89fbb0cf4e.tar.gz
focaccia-qemu-a8a9d30bab2fae2e0ab3436fa0a40d89fbb0cf4e.zip
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/irq.c')
-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;