Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
xen
events.h
Go to the documentation of this file.
1
#ifndef _XEN_EVENTS_H
2
#define _XEN_EVENTS_H
3
4
#include <
linux/interrupt.h
>
5
6
#include <
xen/interface/event_channel.h
>
7
#include <asm/xen/hypercall.h>
8
#include <asm/xen/events.h>
9
10
int
bind_evtchn_to_irq
(
unsigned
int
evtchn);
11
int
bind_evtchn_to_irqhandler
(
unsigned
int
evtchn,
12
irq_handler_t
handler,
13
unsigned
long
irqflags,
const
char
*devname,
14
void
*
dev_id
);
15
int
bind_virq_to_irq
(
unsigned
int
virq,
unsigned
int
cpu
);
16
int
bind_virq_to_irqhandler
(
unsigned
int
virq,
unsigned
int
cpu
,
17
irq_handler_t
handler,
18
unsigned
long
irqflags,
const
char
*devname,
19
void
*
dev_id
);
20
int
bind_ipi_to_irqhandler
(
enum
ipi_vector
ipi,
21
unsigned
int
cpu
,
22
irq_handler_t
handler,
23
unsigned
long
irqflags,
24
const
char
*devname,
25
void
*
dev_id
);
26
int
bind_interdomain_evtchn_to_irqhandler
(
unsigned
int
remote_domain,
27
unsigned
int
remote_port
,
28
irq_handler_t
handler,
29
unsigned
long
irqflags,
30
const
char
*devname,
31
void
*
dev_id
);
32
33
/*
34
* Common unbind function for all event sources. Takes IRQ to unbind from.
35
* Automatically closes the underlying event channel (even for bindings
36
* made with bind_evtchn_to_irqhandler()).
37
*/
38
void
unbind_from_irqhandler
(
unsigned
int
irq,
void
*
dev_id
);
39
40
/*
41
* Allow extra references to event channels exposed to userspace by evtchn
42
*/
43
int
evtchn_make_refcounted
(
unsigned
int
evtchn);
44
int
evtchn_get
(
unsigned
int
evtchn);
45
void
evtchn_put
(
unsigned
int
evtchn);
46
47
void
xen_send_IPI_one
(
unsigned
int
cpu
,
enum
ipi_vector
vector
);
48
int
resend_irq_on_evtchn
(
unsigned
int
irq);
49
void
rebind_evtchn_irq
(
int
evtchn,
int
irq);
50
51
static
inline
void
notify_remote_via_evtchn(
int
port
)
52
{
53
struct
evtchn_send
send
= { .port = port };
54
(
void
)
HYPERVISOR_event_channel_op
(
EVTCHNOP_send
, &send);
55
}
56
57
void
notify_remote_via_irq
(
int
irq);
58
59
void
xen_irq_resume
(
void
);
60
61
/* Clear an irq's pending state, in preparation for polling on it */
62
void
xen_clear_irq_pending
(
int
irq);
63
void
xen_set_irq_pending
(
int
irq);
64
bool
xen_test_irq_pending
(
int
irq);
65
66
/* Poll waiting for an irq to become pending. In the usual case, the
67
irq will be disabled so it won't deliver an interrupt. */
68
void
xen_poll_irq
(
int
irq);
69
70
/* Poll waiting for an irq to become pending with a timeout. In the usual case,
71
* the irq will be disabled so it won't deliver an interrupt. */
72
void
xen_poll_irq_timeout
(
int
irq,
u64
timeout);
73
74
/* Determine the IRQ which is bound to an event channel */
75
unsigned
irq_from_evtchn
(
unsigned
int
evtchn);
76
77
/* Xen HVM evtchn vector callback */
78
void
xen_hvm_callback_vector
(
void
);
79
extern
int
xen_have_vector_callback
;
80
int
xen_set_callback_via
(
uint64_t
via);
81
void
xen_evtchn_do_upcall
(
struct
pt_regs
*
regs
);
82
void
xen_hvm_evtchn_do_upcall
(
void
);
83
84
/* Bind a pirq for a physical interrupt to an irq. */
85
int
xen_bind_pirq_gsi_to_irq
(
unsigned
gsi
,
86
unsigned
pirq,
int
shareable,
char
*
name
);
87
88
#ifdef CONFIG_PCI_MSI
89
/* Allocate a pirq for a MSI style physical interrupt. */
90
int
xen_allocate_pirq_msi(
struct
pci_dev
*
dev
,
struct
msi_desc
*msidesc);
91
/* Bind an PSI pirq to an irq. */
92
int
xen_bind_pirq_msi_to_irq(
struct
pci_dev
*
dev
,
struct
msi_desc
*msidesc,
93
int
pirq,
int
vector
,
const
char
*
name
,
94
domid_t
domid
);
95
#endif
96
97
/* De-allocates the above mentioned physical interrupt. */
98
int
xen_destroy_irq
(
int
irq);
99
100
/* Return irq from pirq */
101
int
xen_irq_from_pirq
(
unsigned
pirq);
102
103
/* Return the pirq allocated to the irq. */
104
int
xen_pirq_from_irq
(
unsigned
irq);
105
106
/* Return the irq allocated to the gsi */
107
int
xen_irq_from_gsi
(
unsigned
gsi
);
108
109
/* Determine whether to ignore this IRQ if it is passed to a guest. */
110
int
xen_test_irq_shared
(
int
irq);
111
112
/* initialize Xen IRQ subsystem */
113
void
xen_init_IRQ
(
void
);
114
#endif
/* _XEN_EVENTS_H */
Generated on Thu Jan 10 2013 12:55:26 for Linux Kernel by
1.8.2