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
drivers
xen
fallback.c
Go to the documentation of this file.
1
#include <linux/kernel.h>
2
#include <linux/string.h>
3
#include <
linux/bug.h
>
4
#include <linux/export.h>
5
#include <asm/hypervisor.h>
6
#include <asm/xen/hypercall.h>
7
8
int
xen_event_channel_op_compat
(
int
cmd
,
void
*
arg
)
9
{
10
struct
evtchn_op
op;
11
int
rc
;
12
13
op.
cmd
=
cmd
;
14
memcpy
(&op.
u
, arg,
sizeof
(op.
u
));
15
rc =
_hypercall1
(
int
, event_channel_op_compat, &op);
16
17
switch
(cmd) {
18
case
EVTCHNOP_close
:
19
case
EVTCHNOP_send
:
20
case
EVTCHNOP_bind_vcpu
:
21
case
EVTCHNOP_unmask
:
22
/* no output */
23
break
;
24
25
#define COPY_BACK(eop) \
26
case EVTCHNOP_##eop: \
27
memcpy(arg, &op.u.eop, sizeof(op.u.eop)); \
28
break
29
30
COPY_BACK
(
bind_interdomain
);
31
COPY_BACK
(
bind_virq
);
32
COPY_BACK
(
bind_pirq
);
33
COPY_BACK
(
status
);
34
COPY_BACK
(
alloc_unbound
);
35
COPY_BACK
(
bind_ipi
);
36
#undef COPY_BACK
37
38
default
:
39
WARN_ON
(rc != -
ENOSYS
);
40
break
;
41
}
42
43
return
rc
;
44
}
45
EXPORT_SYMBOL_GPL
(
xen_event_channel_op_compat
);
46
47
int
HYPERVISOR_physdev_op_compat
(
int
cmd
,
void
*
arg
)
48
{
49
struct
physdev_op
op;
50
int
rc
;
51
52
op.
cmd
=
cmd
;
53
memcpy
(&op.
u
, arg,
sizeof
(op.
u
));
54
rc =
_hypercall1
(
int
, physdev_op_compat, &op);
55
56
switch
(cmd) {
57
case
PHYSDEVOP_IRQ_UNMASK_NOTIFY
:
58
case
PHYSDEVOP_set_iopl
:
59
case
PHYSDEVOP_set_iobitmap
:
60
case
PHYSDEVOP_apic_write
:
61
/* no output */
62
break
;
63
64
#define COPY_BACK(pop, fld) \
65
case PHYSDEVOP_##pop: \
66
memcpy(arg, &op.u.fld, sizeof(op.u.fld)); \
67
break
68
69
COPY_BACK
(
irq_status_query
,
irq_status_query
);
70
COPY_BACK
(apic_read,
apic_op
);
71
COPY_BACK
(ASSIGN_VECTOR,
irq_op
);
72
#undef COPY_BACK
73
74
default
:
75
WARN_ON
(rc != -
ENOSYS
);
76
break
;
77
}
78
79
return
rc
;
80
}
Generated on Thu Jan 10 2013 14:43:27 for Linux Kernel by
1.8.2