irq.h 821 B

123456789101112131415161718192021222324252627282930313233343536
  1. #ifndef QEMU_IRQ_H
  2. #define QEMU_IRQ_H
  3. /* Generic IRQ/GPIO pin infrastructure. */
  4. typedef void (*qemu_irq_handler)(void *opaque, int n, int level);
  5. void qemu_set_irq(qemu_irq irq, int level);
  6. static inline void qemu_irq_raise(qemu_irq irq)
  7. {
  8. qemu_set_irq(irq, 1);
  9. }
  10. static inline void qemu_irq_lower(qemu_irq irq)
  11. {
  12. qemu_set_irq(irq, 0);
  13. }
  14. static inline void qemu_irq_pulse(qemu_irq irq)
  15. {
  16. qemu_set_irq(irq, 1);
  17. qemu_set_irq(irq, 0);
  18. }
  19. /* Returns an array of N IRQs. */
  20. qemu_irq *qemu_allocate_irqs(qemu_irq_handler handler, void *opaque, int n);
  21. void qemu_free_irqs(qemu_irq *s);
  22. /* Returns a new IRQ with opposite polarity. */
  23. qemu_irq qemu_irq_invert(qemu_irq irq);
  24. /* Returns a new IRQ which feeds into both the passed IRQs */
  25. qemu_irq qemu_irq_split(qemu_irq irq1, qemu_irq irq2);
  26. #endif