Skip to content

Commit

Permalink
hw/core: Add interface to allocate and free a single IRQ
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Marcel Apfelbaum authored and mstsirkin committed Oct 14, 2013
1 parent a53ae8e commit a8a9d30
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 0 deletions.
16 changes: 16 additions & 0 deletions hw/core/irq.c
Expand Up @@ -68,13 +68,29 @@ 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)
{
g_free(s[0]);
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;
Expand Down
7 changes: 7 additions & 0 deletions include/hw/irq.h
Expand Up @@ -30,13 +30,20 @@ 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.
*/
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);
Expand Down

0 comments on commit a8a9d30

Please sign in to comment.