Coverage Report

Created: 2017-10-25 09:10

/root/src/xen/xen/include/xen/hypercall.h
Line
Count
Source
1
/******************************************************************************
2
 * hypercall.h
3
 */
4
5
#ifndef __XEN_HYPERCALL_H__
6
#define __XEN_HYPERCALL_H__
7
8
#include <xen/types.h>
9
#include <xen/time.h>
10
#include <public/xen.h>
11
#include <public/domctl.h>
12
#include <public/sysctl.h>
13
#include <public/platform.h>
14
#include <public/event_channel.h>
15
#include <public/tmem.h>
16
#include <public/version.h>
17
#include <public/pmu.h>
18
#include <public/hvm/dm_op.h>
19
#include <asm/hypercall.h>
20
#include <xsm/xsm.h>
21
22
extern long
23
do_sched_op(
24
    int cmd,
25
    XEN_GUEST_HANDLE_PARAM(void) arg);
26
27
extern long
28
do_domctl(
29
    XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl);
30
31
extern long
32
arch_do_domctl(
33
    struct xen_domctl *domctl, struct domain *d,
34
    XEN_GUEST_HANDLE_PARAM(xen_domctl_t) u_domctl);
35
36
extern long
37
do_sysctl(
38
    XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_sysctl);
39
40
extern long
41
arch_do_sysctl(
42
    struct xen_sysctl *sysctl,
43
    XEN_GUEST_HANDLE_PARAM(xen_sysctl_t) u_sysctl);
44
45
extern long
46
do_platform_op(
47
    XEN_GUEST_HANDLE_PARAM(xen_platform_op_t) u_xenpf_op);
48
49
/*
50
 * To allow safe resume of do_memory_op() after preemption, we need to know
51
 * at what point in the page list to resume. For this purpose I steal the
52
 * high-order bits of the @cmd parameter, which are otherwise unused and zero.
53
 *
54
 * Note that both of these values are effectively part of the ABI, even if
55
 * we don't need to make them a formal part of it: A guest suspended for
56
 * migration in the middle of a continuation would fail to work if resumed on
57
 * a hypervisor using different values.
58
 */
59
16
#define MEMOP_EXTENT_SHIFT 6 /* cmd[:6] == start_extent */
60
12
#define MEMOP_CMD_MASK     ((1 << MEMOP_EXTENT_SHIFT) - 1)
61
62
extern long
63
do_memory_op(
64
    unsigned long cmd,
65
    XEN_GUEST_HANDLE_PARAM(void) arg);
66
67
extern long
68
do_multicall(
69
    XEN_GUEST_HANDLE_PARAM(multicall_entry_t) call_list,
70
    unsigned int nr_calls);
71
72
extern long
73
do_set_timer_op(
74
    s_time_t timeout);
75
76
extern long
77
do_event_channel_op(
78
    int cmd, XEN_GUEST_HANDLE_PARAM(void) arg);
79
80
extern long
81
do_xen_version(
82
    int cmd,
83
    XEN_GUEST_HANDLE_PARAM(void) arg);
84
85
extern long
86
do_console_io(
87
    int cmd,
88
    int count,
89
    XEN_GUEST_HANDLE_PARAM(char) buffer);
90
91
extern long
92
do_grant_table_op(
93
    unsigned int cmd,
94
    XEN_GUEST_HANDLE_PARAM(void) uop,
95
    unsigned int count);
96
97
extern long
98
do_vm_assist(
99
    unsigned int cmd,
100
    unsigned int type);
101
102
extern long
103
do_vcpu_op(
104
    int cmd,
105
    unsigned int vcpuid,
106
    XEN_GUEST_HANDLE_PARAM(void) arg);
107
108
struct vcpu;
109
extern long
110
arch_do_vcpu_op(int cmd,
111
    struct vcpu *v,
112
    XEN_GUEST_HANDLE_PARAM(void) arg);
113
114
extern long
115
do_nmi_op(
116
    unsigned int cmd,
117
    XEN_GUEST_HANDLE_PARAM(void) arg);
118
119
extern long
120
do_hvm_op(
121
    unsigned long op,
122
    XEN_GUEST_HANDLE_PARAM(void) arg);
123
124
extern long
125
do_kexec_op(
126
    unsigned long op,
127
    XEN_GUEST_HANDLE_PARAM(void) uarg);
128
129
extern long
130
do_xsm_op(
131
    XEN_GUEST_HANDLE_PARAM(xsm_op_t) u_xsm_op);
132
133
#ifdef CONFIG_TMEM
134
extern long
135
do_tmem_op(
136
    XEN_GUEST_HANDLE_PARAM(tmem_op_t) uops);
137
#endif
138
139
extern long
140
do_xenoprof_op(int op, XEN_GUEST_HANDLE_PARAM(void) arg);
141
142
extern long
143
do_xenpmu_op(unsigned int op, XEN_GUEST_HANDLE_PARAM(xen_pmu_params_t) arg);
144
145
extern long
146
do_dm_op(
147
    domid_t domid,
148
    unsigned int nr_bufs,
149
    XEN_GUEST_HANDLE_PARAM(xen_dm_op_buf_t) bufs);
150
151
#ifdef CONFIG_COMPAT
152
153
extern int
154
compat_memory_op(
155
    unsigned int cmd,
156
    XEN_GUEST_HANDLE_PARAM(void) arg);
157
158
extern int
159
compat_grant_table_op(
160
    unsigned int cmd,
161
    XEN_GUEST_HANDLE_PARAM(void) uop,
162
    unsigned int count);
163
164
extern int
165
compat_vcpu_op(
166
    int cmd,
167
    unsigned int vcpuid,
168
    XEN_GUEST_HANDLE_PARAM(void) arg);
169
170
extern int
171
compat_xenoprof_op(int op, XEN_GUEST_HANDLE_PARAM(void) arg);
172
173
extern int
174
compat_xen_version(
175
    int cmd,
176
    XEN_GUEST_HANDLE_PARAM(void) arg);
177
178
extern int
179
compat_sched_op(
180
    int cmd,
181
    XEN_GUEST_HANDLE_PARAM(void) arg);
182
183
extern int
184
compat_set_timer_op(
185
    u32 lo,
186
    s32 hi);
187
188
extern int compat_xsm_op(
189
    XEN_GUEST_HANDLE_PARAM(xsm_op_t) op);
190
191
extern int compat_kexec_op(unsigned long op, XEN_GUEST_HANDLE_PARAM(void) uarg);
192
193
extern int compat_vm_assist(unsigned int cmd, unsigned int type);
194
195
DEFINE_XEN_GUEST_HANDLE(multicall_entry_compat_t);
196
extern int compat_multicall(
197
    XEN_GUEST_HANDLE_PARAM(multicall_entry_compat_t) call_list,
198
    uint32_t nr_calls);
199
200
#include <compat/hvm/dm_op.h>
201
202
extern int
203
compat_dm_op(
204
    domid_t domid,
205
    unsigned int nr_bufs,
206
    XEN_GUEST_HANDLE_PARAM(void) bufs);
207
208
#endif
209
210
void arch_get_xen_caps(xen_capabilities_info_t *info);
211
212
#endif /* __XEN_HYPERCALL_H__ */