Blame view
include/xen/events.h
3.51 KB
e46cdb66c xen: event channels |
1 2 |
#ifndef _XEN_EVENTS_H #define _XEN_EVENTS_H |
f87e4cac4 xen: SMP guest su... |
3 4 5 6 |
#include <linux/interrupt.h> #include <xen/interface/event_channel.h> #include <asm/xen/hypercall.h> |
e849c3e9e Xen: make events.... |
7 |
#include <asm/xen/events.h> |
e46cdb66c xen: event channels |
8 |
|
b536b4b96 xen: use the hvc ... |
9 |
int bind_evtchn_to_irq(unsigned int evtchn); |
e46cdb66c xen: event channels |
10 |
int bind_evtchn_to_irqhandler(unsigned int evtchn, |
f87e4cac4 xen: SMP guest su... |
11 |
irq_handler_t handler, |
e46cdb66c xen: event channels |
12 13 |
unsigned long irqflags, const char *devname, void *dev_id); |
4fe7d5a70 xen: make hvc_xen... |
14 |
int bind_virq_to_irq(unsigned int virq, unsigned int cpu); |
e46cdb66c xen: event channels |
15 |
int bind_virq_to_irqhandler(unsigned int virq, unsigned int cpu, |
f87e4cac4 xen: SMP guest su... |
16 17 18 19 20 21 22 23 24 |
irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id); int bind_ipi_to_irqhandler(enum ipi_vector ipi, unsigned int cpu, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id); |
2e820f58f xen/irq: implemen... |
25 26 27 28 29 30 |
int bind_interdomain_evtchn_to_irqhandler(unsigned int remote_domain, unsigned int remote_port, irq_handler_t handler, unsigned long irqflags, const char *devname, void *dev_id); |
e46cdb66c xen: event channels |
31 32 33 34 35 36 37 |
/* * 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(unsigned int irq, void *dev_id); |
420eb554d xen/event: Add re... |
38 39 40 41 42 43 |
/* * Allow extra references to event channels exposed to userspace by evtchn */ int evtchn_make_refcounted(unsigned int evtchn); int evtchn_get(unsigned int evtchn); void evtchn_put(unsigned int evtchn); |
f87e4cac4 xen: SMP guest su... |
44 |
void xen_send_IPI_one(unsigned int cpu, enum ipi_vector vector); |
642e0c882 xen: add resend_i... |
45 |
int resend_irq_on_evtchn(unsigned int irq); |
eb1e305f4 xen: add rebind_e... |
46 |
void rebind_evtchn_irq(int evtchn, int irq); |
f87e4cac4 xen: SMP guest su... |
47 |
|
e46cdb66c xen: event channels |
48 49 50 51 52 |
static inline void notify_remote_via_evtchn(int port) { struct evtchn_send send = { .port = port }; (void)HYPERVISOR_event_channel_op(EVTCHNOP_send, &send); } |
76465b2da xen: events: remo... |
53 |
void notify_remote_via_irq(int irq); |
0e91398f2 xen: implement sa... |
54 |
|
76465b2da xen: events: remo... |
55 |
void xen_irq_resume(void); |
0e91398f2 xen: implement sa... |
56 |
|
2d9e1e2f5 xen: implement Xe... |
57 58 |
/* Clear an irq's pending state, in preparation for polling on it */ void xen_clear_irq_pending(int irq); |
168d2f464 xen: save previou... |
59 60 |
void xen_set_irq_pending(int irq); bool xen_test_irq_pending(int irq); |
2d9e1e2f5 xen: implement Xe... |
61 62 63 64 |
/* 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); |
d9a8814f2 xen: Provide a va... |
65 66 67 |
/* 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); |
d4c045364 xen: add irq_from... |
68 69 |
/* Determine the IRQ which is bound to an event channel */ unsigned irq_from_evtchn(unsigned int evtchn); |
38e20b07e x86/xen: event ch... |
70 |
/* Xen HVM evtchn vector callback */ |
76465b2da xen: events: remo... |
71 |
void xen_hvm_callback_vector(void); |
38e20b07e x86/xen: event ch... |
72 73 74 75 |
extern int xen_have_vector_callback; int xen_set_callback_via(uint64_t via); void xen_evtchn_do_upcall(struct pt_regs *regs); void xen_hvm_evtchn_do_upcall(void); |
f4d0635bf xen: events: refa... |
76 77 78 |
/* 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); |
f731e3ef0 xen: remap MSIs i... |
79 80 |
#ifdef CONFIG_PCI_MSI |
f4d0635bf xen: events: refa... |
81 |
/* Allocate a pirq for a MSI style physical interrupt. */ |
bf480d952 xen: events: sepa... |
82 |
int xen_allocate_pirq_msi(struct pci_dev *dev, struct msi_desc *msidesc); |
f4d0635bf xen: events: refa... |
83 |
/* Bind an PSI pirq to an irq. */ |
bf480d952 xen: events: sepa... |
84 |
int xen_bind_pirq_msi_to_irq(struct pci_dev *dev, struct msi_desc *msidesc, |
beafbdc1d xen/irq: Check if... |
85 86 |
int pirq, int vector, const char *name, domid_t domid); |
f731e3ef0 xen: remap MSIs i... |
87 |
#endif |
d46a78b05 xen: implement pi... |
88 |
|
b5401a96b xen/x86/PCI: Add ... |
89 90 |
/* De-allocates the above mentioned physical interrupt. */ int xen_destroy_irq(int irq); |
af42b8d12 xen: fix MSI setu... |
91 92 |
/* Return irq from pirq */ int xen_irq_from_pirq(unsigned pirq); |
e6197acc7 xen/irq: Export '... |
93 94 |
/* Return the pirq allocated to the irq. */ int xen_pirq_from_irq(unsigned irq); |
c7c2c3a28 xen/irq: Add supp... |
95 96 |
/* Determine whether to ignore this IRQ if it is passed to a guest. */ int xen_test_irq_shared(int irq); |
e46cdb66c xen: event channels |
97 |
#endif /* _XEN_EVENTS_H */ |