diff options
author | Marcel Apfelbaum <marcel.a@redhat.com> | 2013-10-07 10:36:34 +0300 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2013-10-14 17:11:44 +0300 |
commit | a8a9d30bab2fae2e0ab3436fa0a40d89fbb0cf4e (patch) | |
tree | 8557aee9d19c011d9926a83ee77c17a50ffa9f96 /hw/core | |
parent | a53ae8e934cd54686875b5bcfc2f434244ee55d6 (diff) |
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.c | 16 |
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; |