diff options
author | dfr <dfr@FreeBSD.org> | 2009-03-11 15:30:12 +0000 |
---|---|---|
committer | dfr <dfr@FreeBSD.org> | 2009-03-11 15:30:12 +0000 |
commit | 598fb4217fe304b2d9dae488867c35e7213e3ba5 (patch) | |
tree | 633dc40712503605071c68975d2c972638554000 /sys/xen/xen_intr.h | |
parent | 2ee25eb1a489668e88e623440b968811e9f6d5b3 (diff) | |
parent | 0b3e97d804d73af27fba381fd51fe0dd48a9cb06 (diff) | |
download | FreeBSD-src-598fb4217fe304b2d9dae488867c35e7213e3ba5.zip FreeBSD-src-598fb4217fe304b2d9dae488867c35e7213e3ba5.tar.gz |
Merge in support for Xen HVM on amd64 architecture.
Diffstat (limited to 'sys/xen/xen_intr.h')
-rw-r--r-- | sys/xen/xen_intr.h | 64 |
1 files changed, 45 insertions, 19 deletions
diff --git a/sys/xen/xen_intr.h b/sys/xen/xen_intr.h index 528fa7f..68f5943 100644 --- a/sys/xen/xen_intr.h +++ b/sys/xen/xen_intr.h @@ -29,37 +29,63 @@ #define dynirq_to_irq(_x) ((_x) + DYNIRQ_BASE) #define irq_to_dynirq(_x) ((_x) - DYNIRQ_BASE) -/* Dynamic binding of event channels and VIRQ sources to Linux IRQ space. */ -extern void unbind_from_irq(int irq); +/* + * Dynamic binding of event channels and VIRQ sources to guest IRQ space. + */ +/* + * Bind a caller port event channel to an interrupt handler. If + * successful, the guest IRQ number is returned in *irqp. Return zero + * on success or errno otherwise. + */ extern int bind_caller_port_to_irqhandler(unsigned int caller_port, const char *devname, driver_intr_t handler, void *arg, unsigned long irqflags, unsigned int *irqp); + +/* + * Bind a listening port to an interrupt handler. If successful, the + * guest IRQ number is returned in *irqp. Return zero on success or + * errno otherwise. + */ extern int bind_listening_port_to_irqhandler(unsigned int remote_domain, - const char *devname, driver_intr_t handler, void *arg, unsigned long irqflags, - unsigned int *irqp); + const char *devname, driver_intr_t handler, void *arg, + unsigned long irqflags, unsigned int *irqp); + +/* + * Bind a VIRQ to an interrupt handler. If successful, the guest IRQ + * number is returned in *irqp. Return zero on success or errno + * otherwise. + */ extern int bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu, const char *devname, driver_filter_t filter, driver_intr_t handler, void *arg, unsigned long irqflags, unsigned int *irqp); -extern int bind_ipi_to_irqhandler(unsigned int ipi, - unsigned int cpu, - const char *devname, - driver_filter_t handler, - unsigned long irqflags, - unsigned int *irqp); -extern int bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain, - unsigned int remote_port, - const char *devname, - driver_filter_t filter, - driver_intr_t handler, - unsigned long irqflags, - unsigned int *irqp); +/* + * Bind an IPI to an interrupt handler. If successful, the guest + * IRQ number is returned in *irqp. Return zero on success or errno + * otherwise. + */ +extern int bind_ipi_to_irqhandler(unsigned int ipi, unsigned int cpu, + const char *devname, driver_filter_t filter, + unsigned long irqflags, unsigned int *irqp); +/* + * Bind an interdomain event channel to an interrupt handler. If + * successful, the guest IRQ number is returned in *irqp. Return zero + * on success or errno otherwise. + */ +extern int bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain, + unsigned int remote_port, const char *devname, + driver_filter_t filter, driver_intr_t handler, + unsigned long irqflags, unsigned int *irqp); +/* + * Unbind an interrupt handler using the guest IRQ number returned + * when it was bound. + */ +extern void unbind_from_irqhandler(unsigned int irq); -extern void unbind_from_irqhandler(unsigned int evtchn); -static __inline__ int irq_cannonicalize(int irq) +static __inline__ int irq_cannonicalize(unsigned int irq) { return (irq == 2) ? 9 : irq; } |