int bind_evtchn_to_irq(evtchn_port_t evtchn); int bind_evtchn_to_irq_lateeoi(evtchn_port_t evtchn); int bind_evtchn_to_irqhandler(evtchn_port_t evtchn,
irq_handler_t handler, unsignedlong irqflags, constchar *devname, void *dev_id); int bind_evtchn_to_irqhandler_lateeoi(evtchn_port_t evtchn,
irq_handler_t handler, unsignedlong irqflags, constchar *devname, void *dev_id); int bind_virq_to_irq(unsignedint virq, unsignedint cpu, bool percpu); int bind_virq_to_irqhandler(unsignedint virq, unsignedint cpu,
irq_handler_t handler, unsignedlong irqflags, constchar *devname, void *dev_id); int bind_ipi_to_irqhandler(enum ipi_vector ipi, unsignedint cpu,
irq_handler_t handler, unsignedlong irqflags, constchar *devname, void *dev_id); int bind_interdomain_evtchn_to_irq_lateeoi(struct xenbus_device *dev,
evtchn_port_t remote_port); int bind_interdomain_evtchn_to_irqhandler_lateeoi(struct xenbus_device *dev,
evtchn_port_t remote_port,
irq_handler_t handler, unsignedlong irqflags, constchar *devname, void *dev_id);
/* * Common unbind function for all event sources. Takes IRQ to unbind from. * Automatically closes the underlying event channel (even for bindings * made with bind_evtchn_to_irqhandler()).
*/ void unbind_from_irqhandler(unsignedint irq, void *dev_id);
/* * Send late EOI for an IRQ bound to an event channel via one of the *_lateeoi * functions above.
*/ void xen_irq_lateeoi(unsignedint irq, unsignedint eoi_flags); /* Signal an event was spurious, i.e. there was no action resulting from it. */ #define XEN_EOI_FLAG_SPURIOUS 0x00000001
/* * Allow extra references to event channels exposed to userspace by evtchn
*/ int evtchn_make_refcounted(evtchn_port_t evtchn, bool is_static); int evtchn_get(evtchn_port_t evtchn); void evtchn_put(evtchn_port_t evtchn);
/* Clear an irq's pending state, in preparation for polling on it */ void xen_clear_irq_pending(int irq); bool xen_test_irq_pending(int irq);
/* Poll waiting for an irq to become pending. In the usual case, the
irq will be disabled so it won't deliver an interrupt. */ void xen_poll_irq(int irq);
/* Poll waiting for an irq to become pending with a timeout. In the usual case,
* the irq will be disabled so it won't deliver an interrupt. */ void xen_poll_irq_timeout(int irq, u64 timeout);
/* Determine the IRQ which is bound to an event channel */ unsignedint irq_from_evtchn(evtchn_port_t evtchn); int irq_evtchn_from_virq(unsignedint cpu, unsignedint virq,
evtchn_port_t *evtchn);
int xen_set_callback_via(uint64_t via); int xen_evtchn_do_upcall(void);
/* Bind a pirq for a physical interrupt to an irq. */ int xen_bind_pirq_gsi_to_irq(unsigned gsi, unsigned pirq, int shareable, char *name);
#ifdef CONFIG_PCI_MSI /* Allocate a pirq for a MSI style physical interrupt. */ int xen_allocate_pirq_msi(struct pci_dev *dev, struct msi_desc *msidesc); /* Bind an PSI pirq to an irq. */ int xen_bind_pirq_msi_to_irq(struct pci_dev *dev, struct msi_desc *msidesc, int pirq, int nvec, constchar *name, domid_t domid); #endif
/* De-allocates the above mentioned physical interrupt. */ int xen_destroy_irq(int irq);
/* Return the pirq allocated to the irq. */ int xen_pirq_from_irq(unsigned irq);
/* Return the irq allocated to the gsi */ int xen_irq_from_gsi(unsigned gsi);
/* Determine whether to ignore this IRQ if it is passed to a guest. */ int xen_test_irq_shared(int irq);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.