Coverage Report

Created: 2017-10-25 09:10

/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__ */