mirror of https://gitee.com/openkylin/qemu.git
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>
This commit is contained in:
parent
a53ae8e934
commit
a8a9d30bab
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue