/root/src/xen/xen/include/xen/compat.h
Line | Count | Source (jump to first uncovered line) |
1 | | /****************************************************************************** |
2 | | * compat.h |
3 | | */ |
4 | | |
5 | | #ifndef __XEN_COMPAT_H__ |
6 | | #define __XEN_COMPAT_H__ |
7 | | |
8 | | #ifdef CONFIG_COMPAT |
9 | | |
10 | | #include <xen/types.h> |
11 | | #include <asm/compat.h> |
12 | | #include <compat/xlat.h> |
13 | | |
14 | | #define __DEFINE_COMPAT_HANDLE(name, type) \ |
15 | | typedef struct { \ |
16 | | compat_ptr_t c; \ |
17 | | type *_[0] __packed; \ |
18 | | } __compat_handle_ ## name; \ |
19 | | typedef struct { \ |
20 | | compat_ptr_t c; \ |
21 | | const type *_[0] __packed; \ |
22 | | } __compat_handle_const_ ## name |
23 | | |
24 | | #define DEFINE_COMPAT_HANDLE(name) \ |
25 | | __DEFINE_COMPAT_HANDLE(name, name) |
26 | | #define COMPAT_HANDLE(name) __compat_handle_ ## name |
27 | | |
28 | | /* Is the compat handle a NULL reference? */ |
29 | 0 | #define compat_handle_is_null(hnd) ((hnd).c == 0) |
30 | | |
31 | | /* Offset the given compat handle into the array it refers to. */ |
32 | | #define compat_handle_add_offset(hnd, nr) \ |
33 | | ((hnd).c += (nr) * sizeof(**(hnd)._)) |
34 | | |
35 | | /* Cast a compat handle to the specified type of handle. */ |
36 | | #define compat_handle_cast(chnd, type) ({ \ |
37 | | type *_x = (__typeof__(**(chnd)._) *)(full_ptr_t)(chnd).c; \ |
38 | | (COMPAT_HANDLE(type)) { (full_ptr_t)_x }; \ |
39 | | }) |
40 | | |
41 | | #define guest_from_compat_handle(ghnd, chnd) \ |
42 | 0 | set_xen_guest_handle(ghnd, \ |
43 | 0 | (__typeof__(**(chnd)._) *)(full_ptr_t)(chnd).c) |
44 | | |
45 | | /* |
46 | | * Copy an array of objects to guest context via a compat handle, |
47 | | * specifying an offset into the guest array. |
48 | | */ |
49 | 0 | #define copy_to_compat_offset(hnd, off, ptr, nr) ({ \ |
50 | 0 | const typeof(*(ptr)) *_s = (ptr); \ |
51 | 0 | char (*_d)[sizeof(*_s)] = (void *)(full_ptr_t)(hnd).c; \ |
52 | 0 | ((void)((typeof(**(hnd)._) *)(full_ptr_t)(hnd).c == (ptr))); \ |
53 | 0 | raw_copy_to_guest(_d + (off), _s, sizeof(*_s) * (nr)); \ |
54 | 0 | }) |
55 | | |
56 | | /* |
57 | | * Copy an array of objects from guest context via a compat handle, |
58 | | * specifying an offset into the guest array. |
59 | | */ |
60 | 0 | #define copy_from_compat_offset(ptr, hnd, off, nr) ({ \ |
61 | 0 | const typeof(*(ptr)) *_s = (typeof(**(hnd)._) *)(full_ptr_t)(hnd).c; \ |
62 | 0 | typeof(*(ptr)) *_d = (ptr); \ |
63 | 0 | raw_copy_from_guest(_d, _s + (off), sizeof(*_d) * (nr)); \ |
64 | 0 | }) |
65 | | |
66 | | #define copy_to_compat(hnd, ptr, nr) \ |
67 | 0 | copy_to_compat_offset(hnd, 0, ptr, nr) |
68 | | |
69 | | #define copy_from_compat(ptr, hnd, nr) \ |
70 | 0 | copy_from_compat_offset(ptr, hnd, 0, nr) |
71 | | |
72 | | /* Copy sub-field of a structure to guest context via a compat handle. */ |
73 | | #define copy_field_to_compat(hnd, ptr, field) ({ \ |
74 | | const typeof(&(ptr)->field) _s = &(ptr)->field; \ |
75 | | void *_d = &((typeof(**(hnd)._) *)(full_ptr_t)(hnd).c)->field; \ |
76 | | ((void)(&((typeof(**(hnd)._) *)(full_ptr_t)(hnd).c)->field == \ |
77 | | &(ptr)->field)); \ |
78 | | raw_copy_to_guest(_d, _s, sizeof(*_s)); \ |
79 | | }) |
80 | | |
81 | | /* Copy sub-field of a structure from guest context via a compat handle. */ |
82 | | #define copy_field_from_compat(ptr, hnd, field) ({ \ |
83 | | const typeof(&(ptr)->field) _s = \ |
84 | | &((typeof(**(hnd)._) *)(full_ptr_t)(hnd).c)->field; \ |
85 | | typeof(&(ptr)->field) _d = &(ptr)->field; \ |
86 | | raw_copy_from_guest(_d, _s, sizeof(*_d)); \ |
87 | | }) |
88 | | |
89 | | /* |
90 | | * Pre-validate a guest handle. |
91 | | * Allows use of faster __copy_* functions. |
92 | | */ |
93 | | #define compat_handle_okay(hnd, nr) \ |
94 | 0 | (paging_mode_external(current->domain) || \ |
95 | 0 | compat_array_access_ok((void *)(full_ptr_t)(hnd).c, (nr), \ |
96 | 0 | sizeof(**(hnd)._))) |
97 | | |
98 | 0 | #define __copy_to_compat_offset(hnd, off, ptr, nr) ({ \ |
99 | 0 | const typeof(*(ptr)) *_s = (ptr); \ |
100 | 0 | char (*_d)[sizeof(*_s)] = (void *)(full_ptr_t)(hnd).c; \ |
101 | 0 | ((void)((typeof(**(hnd)._) *)(full_ptr_t)(hnd).c == (ptr))); \ |
102 | 0 | __raw_copy_to_guest(_d + (off), _s, sizeof(*_s) * (nr)); \ |
103 | 0 | }) |
104 | | |
105 | 0 | #define __copy_from_compat_offset(ptr, hnd, off, nr) ({ \ |
106 | 0 | const typeof(*(ptr)) *_s = (typeof(**(hnd)._) *)(full_ptr_t)(hnd).c; \ |
107 | 0 | typeof(*(ptr)) *_d = (ptr); \ |
108 | 0 | __raw_copy_from_guest(_d, _s + (off), sizeof(*_d) * (nr)); \ |
109 | 0 | }) |
110 | | |
111 | | #define __copy_to_compat(hnd, ptr, nr) \ |
112 | | __copy_to_compat_offset(hnd, 0, ptr, nr) |
113 | | |
114 | | #define __copy_from_compat(ptr, hnd, nr) \ |
115 | 0 | __copy_from_compat_offset(ptr, hnd, 0, nr) |
116 | | |
117 | | #define __copy_field_to_compat(hnd, ptr, field) ({ \ |
118 | | const typeof(&(ptr)->field) _s = &(ptr)->field; \ |
119 | | void *_d = &((typeof(**(hnd)._) *)(full_ptr_t)(hnd).c)->field; \ |
120 | | ((void)(&((typeof(**(hnd)._) *)(full_ptr_t)(hnd).c)->field == \ |
121 | | &(ptr)->field)); \ |
122 | | __raw_copy_to_guest(_d, _s, sizeof(*_s)); \ |
123 | | }) |
124 | | |
125 | | #define __copy_field_from_compat(ptr, hnd, field) ({ \ |
126 | | const typeof(&(ptr)->field) _s = \ |
127 | | &((typeof(**(hnd)._) *)(full_ptr_t)(hnd).c)->field; \ |
128 | | typeof(&(ptr)->field) _d = &(ptr)->field; \ |
129 | | __raw_copy_from_guest(_d, _s, sizeof(*_d)); \ |
130 | | }) |
131 | | |
132 | | |
133 | | #define CHECK_NAME(name, tag) __check ## tag ## name |
134 | | #define CHECK_NAME_(k, n, tag) __check ## tag ## k ## _ ## n |
135 | | |
136 | | #define CHECK_TYPE(name) \ |
137 | | static inline int __maybe_unused \ |
138 | | CHECK_NAME(name, T)(xen_ ## name ## _t *x, \ |
139 | 0 | compat_ ## name ## _t *c) \ |
140 | 0 | { \ |
141 | 0 | return x == c; \ |
142 | 0 | } Unexecuted instantiation: memory.c:__checkTdomid Unexecuted instantiation: kernel.c:__checkTdomain_handle Unexecuted instantiation: kernel.c:__checkTcapabilities_info Unexecuted instantiation: xenoprof.c:__checkTdomid |
143 | | #define CHECK_TYPE_(k, n) \ |
144 | | static inline int __maybe_unused \ |
145 | | CHECK_NAME_(k, n, T)(k xen_ ## n *x, \ |
146 | | k compat_ ## n *c) \ |
147 | | { \ |
148 | | return x == c; \ |
149 | | } |
150 | | |
151 | | #define CHECK_SIZE(name) \ |
152 | | typedef int CHECK_NAME(name, S)[1 - (sizeof(xen_ ## name ## _t) != \ |
153 | | sizeof(compat_ ## name ## _t)) * 2] |
154 | | #define CHECK_SIZE_(k, n) \ |
155 | | typedef int CHECK_NAME_(k, n, S)[1 - (sizeof(k xen_ ## n) != \ |
156 | | sizeof(k compat_ ## n)) * 2] |
157 | | |
158 | | #define CHECK_FIELD_COMMON(name, t, f) \ |
159 | | static inline int __maybe_unused name(xen_ ## t ## _t *x, compat_ ## t ## _t *c) \ |
160 | | { \ |
161 | | BUILD_BUG_ON(offsetof(xen_ ## t ## _t, f) != \ |
162 | | offsetof(compat_ ## t ## _t, f)); \ |
163 | | return &x->f == &c->f; \ |
164 | | } |
165 | | #define CHECK_FIELD_COMMON_(k, name, n, f) \ |
166 | 0 | static inline int __maybe_unused name(k xen_ ## n *x, k compat_ ## n *c) \ |
167 | 0 | { \ |
168 | 0 | BUILD_BUG_ON(offsetof(k xen_ ## n, f) != \ |
169 | 0 | offsetof(k compat_ ## n, f)); \ |
170 | 0 | return &x->f == &c->f; \ |
171 | 0 | } Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_get_version__dom Unexecuted instantiation: grant_table.c:__checkFunion_grant_entry_v2____spacer Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_unmap_and_replace__handle Unexecuted instantiation: grant_table.c:__checkF1union_grant_entry_v2__sub_page__frame Unexecuted instantiation: grant_table.c:__checkFstruct_grant_entry_v1__frame Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_map_grant_ref__flags Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_unmap_grant_ref__status Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_cache_flush__op Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_map_grant_ref__ref Unexecuted instantiation: grant_table.c:__checkF1union_grant_entry_v2__transitive__gref Unexecuted instantiation: grant_table.c:__checkF1union_grant_entry_v2__sub_page__hdr Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_unmap_and_replace__status Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_get_version__version Unexecuted instantiation: grant_table.c:__checkFstruct_grant_entry_header__domid Unexecuted instantiation: grant_table.c:__checkF1union_grant_entry_v2__transitive__pad0 Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_map_grant_ref__dom Unexecuted instantiation: grant_table.c:__checkF1union_grant_entry_v2__sub_page__page_off Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_get_version__pad Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_map_grant_ref__status Unexecuted instantiation: grant_table.c:__checkFstruct_grant_entry_header__flags Unexecuted instantiation: grant_table.c:__checkF1union_grant_entry_v2__transitive__trans_domid Unexecuted instantiation: grant_table.c:__checkF1union_grant_entry_v2__full_page__pad0 Unexecuted instantiation: grant_table.c:__checkF1struct_gnttab_cache_flush__a__ref Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_swap_grant_ref__ref_b Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_map_grant_ref__handle Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_dump_table__dom Unexecuted instantiation: grant_table.c:__checkF1union_grant_entry_v2__full_page__frame Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_swap_grant_ref__ref_a Unexecuted instantiation: grant_table.c:__checkF1union_grant_entry_v2__transitive__hdr Unexecuted instantiation: grant_table.c:__checkFstruct_grant_entry_v1__domid Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_map_grant_ref__dev_bus_addr Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_dump_table__status Unexecuted instantiation: grant_table.c:__checkF1struct_gnttab_cache_flush__a__dev_bus_addr Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_cache_flush__length Unexecuted instantiation: grant_table.c:__checkFunion_grant_entry_v2__hdr Unexecuted instantiation: grant_table.c:__checkFstruct_grant_entry_v1__flags Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_set_version__version Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_unmap_grant_ref__host_addr Unexecuted instantiation: grant_table.c:__checkF1union_grant_entry_v2__full_page__hdr Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_cache_flush__offset Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_unmap_and_replace__host_addr Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_unmap_grant_ref__dev_bus_addr Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_swap_grant_ref__status Unexecuted instantiation: schedule.c:__checkFstruct_sched_shutdown__reason Unexecuted instantiation: schedule.c:__checkFstruct_sched_pin_override__pcpu Unexecuted instantiation: schedule.c:__checkFstruct_sched_remote_shutdown__reason Unexecuted instantiation: schedule.c:__checkFstruct_sched_remote_shutdown__domain_id Unexecuted instantiation: trace.c:__checkFstruct_t_buf__cons Unexecuted instantiation: trace.c:__checkFstruct_t_buf__prod Unexecuted instantiation: xenoprof.c:__checkFstruct_oprof_init__is_primary Unexecuted instantiation: xenoprof.c:__checkFstruct_oprof_init__cpu_type Unexecuted instantiation: xenoprof.c:__checkFstruct_oprof_passive__domain_id Unexecuted instantiation: xenoprof.c:__checkFstruct_oprof_passive__max_samples Unexecuted instantiation: xenoprof.c:__checkFstruct_oprof_passive__nbuf Unexecuted instantiation: xenoprof.c:__checkFstruct_oprof_passive__buf_gmaddr Unexecuted instantiation: xenoprof.c:__checkFstruct_oprof_passive__bufsize Unexecuted instantiation: xenoprof.c:__checkFstruct_oprof_init__num_events Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__pad2 Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__ds_limit Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_64__rsi Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__esi Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__cs_base Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_context__pad Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__tr_ar Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__eax Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__cs_limit Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_64__rdi Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__ebp Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__es_ar Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__efer Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_64__rip Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__es_base Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__tr_base Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__esp Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__ss_ar Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__pad1 Unexecuted instantiation: domain.c:__checkFstruct_vcpu_register_vcpu_info__rsvd Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_64__rflags Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__cr3 Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_context__mode Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__ebx Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__ds_ar Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__cr4 Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__ecx Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__cs_ar Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__cr0 Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_64__rbx Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_64__cr0 Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_64__rdx Unexecuted instantiation: domain.c:__checkFstruct_vcpu_register_vcpu_info__mfn Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__eflags Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__edx Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_64__cr3 Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__tr_limit Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_64__rcx Unexecuted instantiation: domain.c:__checkFstruct_vcpu_register_vcpu_info__offset Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_64__cr4 Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__es_limit Unexecuted instantiation: domain.c:__checkFstruct_vcpu_set_periodic_timer__period_ns Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__eip Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_64__rax Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_64__efer Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_64__rsp Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__ss_limit Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__ss_base Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_64__rbp Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__edi Unexecuted instantiation: domain.c:__checkFstruct_vcpu_hvm_x86_32__ds_base Unexecuted instantiation: memory.c:__checkFstruct_vmemrange__flags Unexecuted instantiation: memory.c:__checkFstruct_vmemrange__nid Unexecuted instantiation: memory.c:__checkFstruct_vmemrange__start Unexecuted instantiation: memory.c:__checkFstruct_vmemrange__end Unexecuted instantiation: xlat.c:__checkF2struct_evtchn_status__u__unbound__dom Unexecuted instantiation: xlat.c:__checkF1struct_evtchn_status__u__virq Unexecuted instantiation: xlat.c:__checkF2struct_evtchn_status__u__interdomain__port Unexecuted instantiation: xlat.c:__checkFstruct_vcpu_time_info__pad0 Unexecuted instantiation: xlat.c:__checkFstruct_mmu_update__ptr Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_bind_interdomain__remote_dom Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_status__vcpu Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_bind_interdomain__remote_port Unexecuted instantiation: xlat.c:__checkFstruct_vcpu_time_info__version Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_bind_pirq__flags Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__vesa_lfb__blue_size Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__vesa_lfb__rsvd_pos Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_bind_pirq__port Unexecuted instantiation: xlat.c:__checkF1struct_evtchn_status__u__pirq Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_alloc_unbound__remote_dom Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_alloc_unbound__dom Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_alloc_unbound__port Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_bind_pirq__pirq Unexecuted instantiation: xlat.c:__checkFstruct_vcpu_time_info__tsc_timestamp Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__vesa_lfb__red_size Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__vesa_lfb__green_pos Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__vesa_lfb__blue_pos Unexecuted instantiation: xlat.c:__checkFstruct_mmu_update__val Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_bind_interdomain__local_port Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__vesa_lfb__green_size Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__vesa_lfb__mode_attrs Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_send__port Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__vesa_lfb__width Unexecuted instantiation: xlat.c:__checkFstruct_vcpu_time_info__tsc_shift Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__text_mode_3__columns Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__text_mode_3__cursor_y Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__vesa_lfb__rsvd_size Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__text_mode_3__rows Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__text_mode_3__cursor_x Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__vesa_lfb__gbl_caps Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__vesa_lfb__height Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_op__cmd Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__vesa_lfb__bits_per_pixel Unexecuted instantiation: xlat.c:__checkFstruct_dom0_vga_console_info__video_type Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_bind_ipi__vcpu Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_bind_virq__vcpu Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_bind_ipi__port Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_bind_virq__virq Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_bind_vcpu__vcpu Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_bind_vcpu__port Unexecuted instantiation: xlat.c:__checkFstruct_vcpu_time_info__tsc_to_system_mul Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__vesa_lfb__bytes_per_line Unexecuted instantiation: xlat.c:__checkFstruct_vcpu_time_info__flags Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__vesa_lfb__red_pos Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_status__port Unexecuted instantiation: xlat.c:__checkFstruct_vcpu_time_info__system_time Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__vesa_lfb__lfb_size Unexecuted instantiation: xlat.c:__checkFstruct_vcpu_time_info__pad1 Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__text_mode_3__font_height Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_unmask__port Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_status__dom Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_close__port Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_bind_virq__port Unexecuted instantiation: xlat.c:__checkFstruct_evtchn_status__status Unexecuted instantiation: xlat.c:__checkF2struct_dom0_vga_console_info__u__vesa_lfb__lfb_base Unexecuted instantiation: xlat.c:__checkF2struct_evtchn_status__u__interdomain__dom Unexecuted instantiation: tmem_xen.c:__checkFstruct_tmem_oid__oid Unexecuted instantiation: domctl.c:__checkFstruct_vcpu_guest_context__fpu_ctxt Unexecuted instantiation: domain.c:__checkFstruct_vcpu_guest_context__fpu_ctxt Unexecuted instantiation: physdev.c:__checkFstruct_physdev_pci_mmcfg_reserved__address Unexecuted instantiation: physdev.c:__checkFstruct_physdev_eoi__irq Unexecuted instantiation: physdev.c:__checkF1struct_physdev_manage_pci_ext__physfn__devfn Unexecuted instantiation: physdev.c:__checkFstruct_physdev_get_free_pirq__type Unexecuted instantiation: physdev.c:__checkFstruct_physdev_pci_device__bus Unexecuted instantiation: physdev.c:__checkFstruct_physdev_get_free_pirq__pirq Unexecuted instantiation: physdev.c:__checkFstruct_physdev_irq_status_query__irq Unexecuted instantiation: physdev.c:__checkFstruct_physdev_manage_pci__bus Unexecuted instantiation: physdev.c:__checkFstruct_physdev_pci_device__seg Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_unmap_and_replace__new_addr Unexecuted instantiation: physdev.c:__checkFstruct_physdev_manage_pci_ext__is_virtfn Unexecuted instantiation: physdev.c:__checkFstruct_physdev_unmap_pirq__domid Unexecuted instantiation: physdev.c:__checkFstruct_physdev_setup_gsi__polarity Unexecuted instantiation: physdev.c:__checkFstruct_physdev_set_iopl__iopl Unexecuted instantiation: physdev.c:__checkFstruct_physdev_pci_mmcfg_reserved__start_bus Unexecuted instantiation: physdev.c:__checkFstruct_physdev_manage_pci_ext__is_extfn Unexecuted instantiation: physdev.c:__checkF1struct_physdev_manage_pci_ext__physfn__bus Unexecuted instantiation: physdev.c:__checkFstruct_physdev_setup_gsi__triggering Unexecuted instantiation: physdev.c:__checkFstruct_physdev_pci_device__devfn Unexecuted instantiation: physdev.c:__checkFstruct_physdev_irq_status_query__flags Unexecuted instantiation: physdev.c:__checkFstruct_physdev_pci_mmcfg_reserved__end_bus Unexecuted instantiation: physdev.c:__checkFstruct_physdev_pci_device_add__flags Unexecuted instantiation: physdev.c:__checkFstruct_physdev_pci_mmcfg_reserved__flags Unexecuted instantiation: physdev.c:__checkFstruct_physdev_setup_gsi__gsi Unexecuted instantiation: physdev.c:__checkFstruct_physdev_manage_pci_ext__bus Unexecuted instantiation: physdev.c:__checkFstruct_physdev_pci_device_add__seg Unexecuted instantiation: physdev.c:__checkFstruct_physdev_restore_msi__devfn Unexecuted instantiation: physdev.c:__checkF1struct_physdev_pci_device_add__physfn__bus Unexecuted instantiation: physdev.c:__checkFstruct_physdev_irq__vector Unexecuted instantiation: physdev.c:__checkFstruct_physdev_manage_pci_ext__devfn Unexecuted instantiation: physdev.c:__checkFstruct_physdev_pci_device_add__bus Unexecuted instantiation: physdev.c:__checkFstruct_physdev_restore_msi__bus Unexecuted instantiation: physdev.c:__checkFstruct_physdev_unmap_pirq__pirq Unexecuted instantiation: physdev.c:__checkFstruct_physdev_manage_pci__devfn Unexecuted instantiation: physdev.c:__checkF1struct_physdev_pci_device_add__physfn__devfn Unexecuted instantiation: physdev.c:__checkFstruct_physdev_irq__irq Unexecuted instantiation: physdev.c:__checkFstruct_physdev_pci_device_add__devfn Unexecuted instantiation: physdev.c:__checkFstruct_physdev_pci_device_add__optarr Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_enter_acpi_sleep__val_a Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_pcpuinfo__apic_id Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_resource_entry__rsvd Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_pcpuinfo__flags Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_pcpuinfo__acpi_id Unexecuted instantiation: platform_hypercall.c:__checkF1struct_pf_resource_entry__u__ret Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_pcpu_version__stepping Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_resource_entry__val Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_resource_entry__idx Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_pcpu_version__xen_cpuid Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_enter_acpi_sleep__sleep_state Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_pcpu_version__max_present Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_pcpu_version__vendor_id Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_enter_acpi_sleep__val_b Unexecuted instantiation: platform_hypercall.c:__checkF1struct_pf_resource_entry__u__cmd Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_pcpu_version__model Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_pcpuinfo__xen_cpuid Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_pcpu_version__family Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_pcpuinfo__max_present Unexecuted instantiation: platform_hypercall.c:__checkFstruct_pf_enter_acpi_sleep__flags Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_intel_ctxt__arch_counters Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_intel_ctxt__debugctl Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_intel_ctxt__fixed_counters Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_intel_ctxt__regs Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_data__vcpu_id Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_intel_ctxt__global_ovf_ctrl Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_data__domain_id Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_data__pcpu_id Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_intel_ctxt__global_ctrl Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_intel_ctxt__pebs_enable Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_data__pad Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_intel_ctxt__fixed_ctrl Unexecuted instantiation: vpmu.c:__checkF1struct_pmu_params__version__min Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_intel_ctxt__global_status Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_regs__ip Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_params__val Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_regs__cpl Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_regs__sp Unexecuted instantiation: vpmu.c:__checkF1struct_pmu_arch__c__pad Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_intel_ctxt__ds_area Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_regs__flags Unexecuted instantiation: vpmu.c:__checkF1struct_pmu_params__version__maj Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_regs__ss Unexecuted instantiation: vpmu.c:__checkF1struct_pmu_arch__r__pad Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_regs__cs Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_regs__pad Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_params__vcpu Unexecuted instantiation: vpmu.c:__checkF1struct_pmu_arch__l__lapic_lvtpc Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_params__pad Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_arch__pmu_flags Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_amd_ctxt__counters Unexecuted instantiation: vpmu.c:__checkF1struct_pmu_arch__l__pad Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_cntr_pair__counter Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_amd_ctxt__regs Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_amd_ctxt__ctrls Unexecuted instantiation: vpmu.c:__checkFstruct_pmu_cntr_pair__control Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_global__mc_core_threadid Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_recovery__action_flags Unexecuted instantiation: mce.c:__checkFstruct_mc_fetch__fetch_id Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_global__mc_coreid Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_recovery__mc_bank Unexecuted instantiation: mce.c:__checkFstruct_mc_physcpuinfo__ncpus Unexecuted instantiation: mce.c:__checkFstruct_mc__cmd Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_global__mc_flags Unexecuted instantiation: mce.c:__checkFstruct_mc__interface_version Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_extended__mc_msrs Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_global__mc_apicid Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_global__mc_domid Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_bank__mc_tsc Unexecuted instantiation: mce.c:__checkFstruct_mc_info__mi_data Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_bank__mc_ctrl2 Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_common__type Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_global__mc_socketid Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_common__size Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_bank__mc_misc Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_global__mc_vcpuid Unexecuted instantiation: mce.c:__checkFstruct_mc_fetch__flags Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_bank__mc_addr Unexecuted instantiation: mce.c:__checkFstruct_mc_mceinject__mceinj_cpunr Unexecuted instantiation: mce.c:__checkFstruct_mc_msrinject__mcinj_flags Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_bank__mc_status Unexecuted instantiation: mce.c:__checkFstruct_mc_msrinject__mcinj_cpunr Unexecuted instantiation: mce.c:__checkFstruct_cpu_offline_action__mc_core_threadid Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_bank__mc_domid Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_msr__reg Unexecuted instantiation: mce.c:__checkFstruct_cpu_offline_action__mc_coreid Unexecuted instantiation: mce.c:__checkF1struct_mcinfo_recovery__action_info__pad Unexecuted instantiation: mce.c:__checkFstruct_mc_info__flags Unexecuted instantiation: mce.c:__checkFstruct_mc_info__mi_nentries Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_msr__value Unexecuted instantiation: mce.c:__checkFstruct_cpu_offline_action__mc_socketid Unexecuted instantiation: mce.c:__checkFstruct_mc_notifydomain__mc_domid Unexecuted instantiation: mce.c:__checkFstruct_page_offline_action__status Unexecuted instantiation: mce.c:__checkFstruct_mc_msrinject__mcinj_domid Unexecuted instantiation: mce.c:__checkFstruct_mc_notifydomain__flags Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_global__mc_gstatus Unexecuted instantiation: mce.c:__checkFstruct_page_offline_action__mfn Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_recovery__action_types Unexecuted instantiation: mce.c:__checkFstruct_mc_msrinject__mcinj_count Unexecuted instantiation: mce.c:__checkFstruct_mc_notifydomain__mc_vcpuid Unexecuted instantiation: mce.c:__checkFstruct_mcinfo_bank__mc_bank Unexecuted instantiation: dm.c:__checkFstruct_dm_op_create_ioreq_server__handle_bufioreq Unexecuted instantiation: dm.c:__checkFstruct_dm_op_ioreq_server_range__id Unexecuted instantiation: dm.c:__checkFstruct_dm_op_track_dirty_vram__nr Unexecuted instantiation: dm.c:__checkFstruct_dm_op_inject_msi__pad Unexecuted instantiation: dm.c:__checkFstruct_dm_op_set_pci_link_route__link Unexecuted instantiation: dm.c:__checkFstruct_dm_op_create_ioreq_server__id Unexecuted instantiation: dm.c:__checkFstruct_dm_op_track_dirty_vram__pad Unexecuted instantiation: dm.c:__checkFstruct_dm_op_inject_event__vcpuid Unexecuted instantiation: dm.c:__checkFstruct_dm_op_set_pci_link_route__isa_irq Unexecuted instantiation: dm.c:__checkFstruct_dm_op_inject_msi__addr Unexecuted instantiation: dm.c:__checkFstruct_dm_op_ioreq_server_range__pad Unexecuted instantiation: dm.c:__checkFstruct_dm_op_set_isa_irq_level__isa_irq Unexecuted instantiation: dm.c:__checkFstruct_dm_op_create_ioreq_server__pad Unexecuted instantiation: dm.c:__checkFstruct_dm_op_remote_shutdown__reason Unexecuted instantiation: dm.c:__checkFstruct_dm_op_destroy_ioreq_server__id Unexecuted instantiation: dm.c:__checkFstruct_dm_op_set_pci_intx_level__intx Unexecuted instantiation: dm.c:__checkFstruct_dm_op_modified_memory__nr_extents Unexecuted instantiation: dm.c:__checkFstruct_dm_op_ioreq_server_range__type Unexecuted instantiation: dm.c:__checkFstruct_dm_op_inject_event__vector Unexecuted instantiation: dm.c:__checkFstruct_dm_op_destroy_ioreq_server__pad Unexecuted instantiation: dm.c:__checkFstruct_dm_op_inject_event__type Unexecuted instantiation: dm.c:__checkFstruct_dm_op_modified_memory__opaque Unexecuted instantiation: dm.c:__checkFstruct_dm_op_get_ioreq_server_info__id Unexecuted instantiation: dm.c:__checkFstruct_dm_op_ioreq_server_range__start Unexecuted instantiation: dm.c:__checkFstruct_dm_op_set_pci_intx_level__domain Unexecuted instantiation: dm.c:__checkFstruct_dm_op_set_pci_intx_level__level Unexecuted instantiation: dm.c:__checkFstruct_dm_op_inject_event__pad0 Unexecuted instantiation: dm.c:__checkFstruct_dm_op_set_ioreq_server_state__id Unexecuted instantiation: dm.c:__checkFstruct_dm_op_inject_event__insn_len Unexecuted instantiation: dm.c:__checkFstruct_dm_op_set_pci_intx_level__bus Unexecuted instantiation: dm.c:__checkFstruct_dm_op_get_ioreq_server_info__pad Unexecuted instantiation: dm.c:__checkFstruct_dm_op_inject_event__cr2 Unexecuted instantiation: dm.c:__checkFstruct_dm_op_set_mem_type__nr Unexecuted instantiation: dm.c:__checkFstruct_dm_op_inject_event__error_code Unexecuted instantiation: dm.c:__checkFstruct_dm_op_get_ioreq_server_info__bufioreq_port Unexecuted instantiation: dm.c:__checkFstruct_dm_op_set_pci_intx_level__device Unexecuted instantiation: dm.c:__checkFstruct_dm_op_ioreq_server_range__end Unexecuted instantiation: dm.c:__checkFstruct_dm_op_inject_event__pad1 Unexecuted instantiation: dm.c:__checkFstruct_dm_op_set_mem_type__mem_type Unexecuted instantiation: dm.c:__checkFstruct_dm_op_get_ioreq_server_info__ioreq_gfn Unexecuted instantiation: dm.c:__checkFstruct_dm_op_set_ioreq_server_state__pad Unexecuted instantiation: dm.c:__checkFstruct_dm_op_track_dirty_vram__first_pfn Unexecuted instantiation: dm.c:__checkFstruct_dm_op_set_mem_type__pad Unexecuted instantiation: dm.c:__checkFstruct_dm_op_set_isa_irq_level__level Unexecuted instantiation: dm.c:__checkFstruct_dm_op_inject_msi__data Unexecuted instantiation: dm.c:__checkFstruct_dm_op_set_mem_type__first_pfn Unexecuted instantiation: dm.c:__checkFstruct_dm_op_get_ioreq_server_info__bufioreq_gfn Unexecuted instantiation: dm.c:__checkFstruct_dm_op_set_ioreq_server_state__enabled Unexecuted instantiation: hvm.c:__checkFstruct_xsave_hdr__xstate_bv Unexecuted instantiation: hvm.c:__checkFstruct_xsave_hdr__xcomp_bv Unexecuted instantiation: hvm.c:__checkFstruct_xsave_hdr__reserved Unexecuted instantiation: domain.c:__checkFstruct_vcpu_get_physid__phys_id Unexecuted instantiation: cpu_idle.c:__checkFstruct_processor_csd__num Unexecuted instantiation: cpu_idle.c:__checkFstruct_processor_csd__coord_type Unexecuted instantiation: cpu_idle.c:__checkFstruct_processor_csd__domain Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_unmap_grant_ref__handle Unexecuted instantiation: grant_table.c:__checkF1union_grant_entry_v2__sub_page__length Unexecuted instantiation: grant_table.c:__checkFstruct_gnttab_map_grant_ref__host_addr Unexecuted instantiation: physdev.c:__checkFstruct_physdev_pci_mmcfg_reserved__segment |
172 | | |
173 | | #define CHECK_FIELD(t, f) \ |
174 | | CHECK_FIELD_COMMON(CHECK_NAME(t ## __ ## f, F), t, f) |
175 | | #define CHECK_FIELD_(k, n, f) \ |
176 | | CHECK_FIELD_COMMON_(k, CHECK_NAME_(k, n ## __ ## f, F), n, f) |
177 | | |
178 | | #define CHECK_SUBFIELD_1(t, f1, f2) \ |
179 | | CHECK_FIELD_COMMON(CHECK_NAME(t ## __ ## f1 ## __ ## f2, F1), t, f1.f2) |
180 | | #define CHECK_SUBFIELD_1_(k, n, f1, f2) \ |
181 | | CHECK_FIELD_COMMON_(k, CHECK_NAME_(k, n ## __ ## f1 ## __ ## f2, F1), \ |
182 | | n, f1.f2) |
183 | | |
184 | | #define CHECK_SUBFIELD_2(t, f1, f2, f3) \ |
185 | | CHECK_FIELD_COMMON(CHECK_NAME(t ## __ ## f1 ## __ ## f2 ## __ ## f3, F2), \ |
186 | | t, f1.f2.f3) |
187 | | #define CHECK_SUBFIELD_2_(k, n, f1, f2, f3) \ |
188 | | CHECK_FIELD_COMMON_(k, CHECK_NAME_(k, n ## __ ## f1 ## __ ## f2 ## __ ## \ |
189 | | f3, F2), n, f1.f2.f3) |
190 | | |
191 | | /* |
192 | | * Translate a native continuation into a compat guest continuation. |
193 | | * |
194 | | * id: If non-NULL then points to an integer N between 0-5. Will be updated |
195 | | * with the value of the N'th argument to the hypercall. The N'th argument must |
196 | | * not be subject to translation (i.e. cannot be referenced by @mask below). |
197 | | * This option is useful for extracting the "op" argument or similar from the |
198 | | * hypercall to enable further xlat processing. |
199 | | * |
200 | | * nr: Total number of arguments the hypercall has. |
201 | | * |
202 | | * mask: Specifies which of the hypercall arguments require compat translation. |
203 | | * bit 0 indicates that the 0'th argument requires translation, bit 1 indicates |
204 | | * that the first argument requires translation and so on. Native and compat |
205 | | * values for each translated argument are provided as @varargs (see below). |
206 | | * |
207 | | * varargs: For each bit which is set in @mask the varargs contain a native |
208 | | * value (unsigned long) and a compat value (unsigned int). If the native value |
209 | | * and compat value differ and the N'th argument is equal to the native value |
210 | | * then that argument is replaced by the compat value. If the native and compat |
211 | | * values are equal then no translation takes place. If the N'th argument does |
212 | | * not equal the native value then no translation takes place. |
213 | | * |
214 | | * Any untranslated argument (whether due to not being requested in @mask, |
215 | | * native and compat values being equal or N'th argument not equalling native |
216 | | * value) must be equal in both native and compat representations (i.e. the |
217 | | * native version cannot have any bits > 32 set) |
218 | | * |
219 | | * Return: Number of arguments which were actually translated. |
220 | | */ |
221 | | int hypercall_xlat_continuation(unsigned int *id, unsigned int nr, |
222 | | unsigned int mask, ...); |
223 | | |
224 | | /* In-place translation functons: */ |
225 | | struct start_info; |
226 | | void xlat_start_info(struct start_info *, enum XLAT_start_info_console); |
227 | | struct vcpu_runstate_info; |
228 | | void xlat_vcpu_runstate_info(struct vcpu_runstate_info *); |
229 | | |
230 | | struct domain; |
231 | | int switch_compat(struct domain *); |
232 | | |
233 | | #else |
234 | | |
235 | | #define compat_handle_is_null(hnd) 0 |
236 | | |
237 | | #endif |
238 | | |
239 | | #endif /* __XEN_COMPAT_H__ */ |