[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL v2 04/39] hw/core: Add interface to allocate and free
From: |
Michael S. Tsirkin |
Subject: |
[Qemu-devel] [PULL v2 04/39] hw/core: Add interface to allocate and free a single IRQ |
Date: |
Tue, 15 Oct 2013 09:30:14 +0300 |
From: Marcel Apfelbaum <address@hidden>
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 <address@hidden>
Signed-off-by: Michael S. Tsirkin <address@hidden>
---
include/hw/irq.h | 7 +++++++
hw/core/irq.c | 16 ++++++++++++++++
2 files changed, 23 insertions(+)
diff --git a/include/hw/irq.h b/include/hw/irq.h
index 610e6b7..d08bc02 100644
--- a/include/hw/irq.h
+++ b/include/hw/irq.h
@@ -30,6 +30,12 @@ static inline void qemu_irq_pulse(qemu_irq irq)
*/
qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void *opaque, int n);
+/*
+ * Allocates a single IRQ. The irq is assigned with a handler, an opaque
+ * data and the interrupt number.
+ */
+qemu_irq qemu_allocate_irq(qemu_irq_handler handler, void *opaque, int n);
+
/* Extends an Array of IRQs. Old IRQs have their handlers and opaque data
* preserved. New IRQs are assigned the argument handler and opaque data.
*/
@@ -37,6 +43,7 @@ qemu_irq *qemu_extend_irqs(qemu_irq *old, int n_old,
qemu_irq_handler handler,
void *opaque, int n);
void qemu_free_irqs(qemu_irq *s);
+void qemu_free_irq(qemu_irq irq);
/* Returns a new IRQ with opposite polarity. */
qemu_irq qemu_irq_invert(qemu_irq irq);
diff --git a/hw/core/irq.c b/hw/core/irq.c
index 2078542..03c8cb3 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;
--
MST
- [Qemu-devel] [PULL v2 00/39] pci, pc, acpi fixes, enhancements, Michael S. Tsirkin, 2013/10/15
- [Qemu-devel] [PULL v2 01/39] memory: Change MemoryRegion priorities from unsigned to signed, Michael S. Tsirkin, 2013/10/15
- [Qemu-devel] [PULL v2 02/39] docs/memory: Explictly state that MemoryRegion priority is signed, Michael S. Tsirkin, 2013/10/15
- [Qemu-devel] [PULL v2 03/39] hw/pci: partially handle pci master abort, Michael S. Tsirkin, 2013/10/15
- [Qemu-devel] [PULL v2 04/39] hw/core: Add interface to allocate and free a single IRQ,
Michael S. Tsirkin <=
- [Qemu-devel] [PULL v2 05/39] hw/pci: add pci wrappers for allocating and asserting irqs, Michael S. Tsirkin, 2013/10/15
- [Qemu-devel] [PULL v2 06/39] hw/pci-bridge: set PCI_INTERRUPT_PIN register before shpc init, Michael S. Tsirkin, 2013/10/15
- [Qemu-devel] [PULL v2 07/39] hw/vmxnet3: set interrupts using pci irq wrappers, Michael S. Tsirkin, 2013/10/15
- [Qemu-devel] [PULL v2 08/39] hw/vfio: set interrupts using pci irq wrappers, Michael S. Tsirkin, 2013/10/15
- [Qemu-devel] [PULL v2 10/39] hw/pcie: AER and hot-plug events must use device's interrupt, Michael S. Tsirkin, 2013/10/15
- [Qemu-devel] [PULL v2 11/39] hw/pci: removed irq field from PCIDevice, Michael S. Tsirkin, 2013/10/15
- [Qemu-devel] [PULL v2 09/39] hw: set interrupts using pci irq wrappers, Michael S. Tsirkin, 2013/10/15
- [Qemu-devel] [PULL v2 12/39] cleanup object.h: include error.h directly, Michael S. Tsirkin, 2013/10/15
- [Qemu-devel] [PULL v2 13/39] qom: cleanup struct Error references, Michael S. Tsirkin, 2013/10/15
- [Qemu-devel] [PULL v2 14/39] qom: add pointer to int property helpers, Michael S. Tsirkin, 2013/10/15