xenplatform/
sys.rs

1pub const XEN_ELFNOTE_INFO: u64 = 0;
2pub const XEN_ELFNOTE_ENTRY: u64 = 1;
3pub const XEN_ELFNOTE_HYPERCALL_PAGE: u64 = 2;
4pub const XEN_ELFNOTE_VIRT_BASE: u64 = 3;
5pub const XEN_ELFNOTE_PADDR_OFFSET: u64 = 4;
6pub const XEN_ELFNOTE_XEN_VERSION: u64 = 5;
7pub const XEN_ELFNOTE_GUEST_OS: u64 = 6;
8pub const XEN_ELFNOTE_GUEST_VERSION: u64 = 7;
9pub const XEN_ELFNOTE_LOADER: u64 = 8;
10pub const XEN_ELFNOTE_PAE_MODE: u64 = 9;
11pub const XEN_ELFNOTE_FEATURES: u64 = 10;
12pub const XEN_ELFNOTE_BSD_SYMTAB: u64 = 11;
13pub const XEN_ELFNOTE_HV_START_LOW: u64 = 12;
14pub const XEN_ELFNOTE_L1_MFN_VALID: u64 = 13;
15pub const XEN_ELFNOTE_SUSPEND_CANCEL: u64 = 14;
16pub const XEN_ELFNOTE_INIT_P2M: u64 = 15;
17pub const XEN_ELFNOTE_MOD_START_PFN: u64 = 16;
18pub const XEN_ELFNOTE_SUPPORTED_FEATURES: u64 = 17;
19pub const XEN_ELFNOTE_PHYS32_ENTRY: u64 = 18;
20
21#[derive(Copy, Clone)]
22pub struct ElfNoteXenType {
23    pub id: u64,
24    pub name: &'static str,
25    pub is_string: bool,
26}
27
28pub const XEN_ELFNOTE_TYPES: &[ElfNoteXenType] = &[
29    ElfNoteXenType {
30        id: XEN_ELFNOTE_ENTRY,
31        name: "ENTRY",
32        is_string: false,
33    },
34    ElfNoteXenType {
35        id: XEN_ELFNOTE_HYPERCALL_PAGE,
36        name: "HYPERCALL_PAGE",
37        is_string: false,
38    },
39    ElfNoteXenType {
40        id: XEN_ELFNOTE_VIRT_BASE,
41        name: "VIRT_BASE",
42        is_string: false,
43    },
44    ElfNoteXenType {
45        id: XEN_ELFNOTE_INIT_P2M,
46        name: "INIT_P2M",
47        is_string: false,
48    },
49    ElfNoteXenType {
50        id: XEN_ELFNOTE_PADDR_OFFSET,
51        name: "PADDR_OFFSET",
52        is_string: false,
53    },
54    ElfNoteXenType {
55        id: XEN_ELFNOTE_HV_START_LOW,
56        name: "HV_START_LOW",
57        is_string: false,
58    },
59    ElfNoteXenType {
60        id: XEN_ELFNOTE_XEN_VERSION,
61        name: "XEN_VERSION",
62        is_string: true,
63    },
64    ElfNoteXenType {
65        id: XEN_ELFNOTE_GUEST_OS,
66        name: "GUEST_OS",
67        is_string: true,
68    },
69    ElfNoteXenType {
70        id: XEN_ELFNOTE_GUEST_VERSION,
71        name: "GUEST_VERSION",
72        is_string: true,
73    },
74    ElfNoteXenType {
75        id: XEN_ELFNOTE_LOADER,
76        name: "LOADER",
77        is_string: true,
78    },
79    ElfNoteXenType {
80        id: XEN_ELFNOTE_PAE_MODE,
81        name: "PAE_MODE",
82        is_string: true,
83    },
84    ElfNoteXenType {
85        id: XEN_ELFNOTE_FEATURES,
86        name: "FEATURES",
87        is_string: true,
88    },
89    ElfNoteXenType {
90        id: XEN_ELFNOTE_SUPPORTED_FEATURES,
91        name: "SUPPORTED_FEATURES",
92        is_string: false,
93    },
94    ElfNoteXenType {
95        id: XEN_ELFNOTE_BSD_SYMTAB,
96        name: "BSD_SYMTAB",
97        is_string: true,
98    },
99    ElfNoteXenType {
100        id: XEN_ELFNOTE_SUSPEND_CANCEL,
101        name: "SUSPEND_CANCEL",
102        is_string: false,
103    },
104    ElfNoteXenType {
105        id: XEN_ELFNOTE_MOD_START_PFN,
106        name: "MOD_START_PFN",
107        is_string: false,
108    },
109    ElfNoteXenType {
110        id: XEN_ELFNOTE_PHYS32_ENTRY,
111        name: "PHYS32_ENTRY",
112        is_string: false,
113    },
114];
115
116pub const XEN_PAGE_SHIFT: u64 = 12;
117pub const XEN_PAGE_SIZE: u64 = 1 << XEN_PAGE_SHIFT;
118pub const XEN_PAGE_MASK: u64 = !(XEN_PAGE_SIZE - 1);
119pub const SUPERPAGE_BATCH_SIZE: u64 = 512;
120pub const SUPERPAGE_2MB_SHIFT: u64 = 9;
121pub const SUPERPAGE_2MB_NR_PFNS: u64 = 1u64 << SUPERPAGE_2MB_SHIFT;
122pub const SUPERPAGE_1GB_SHIFT: u64 = 18;
123pub const SUPERPAGE_1GB_NR_PFNS: u64 = 1u64 << SUPERPAGE_1GB_SHIFT;
124pub const VGCF_IN_KERNEL: u64 = 1 << 2;
125pub const VGCF_ONLINE: u64 = 1 << 5;
126
127#[repr(C)]
128pub struct GrantEntry {
129    pub flags: u16,
130    pub domid: u16,
131    pub frame: u32,
132}
133
134pub const XEN_HVM_START_MAGIC_VALUE: u32 = 0x336ec578;
135
136pub const HVM_PARAM_STORE_PFN: u32 = 1;
137pub const HVM_PARAM_STORE_EVTCHN: u32 = 2;
138pub const HVM_PARAM_IOREQ_PFN: u32 = 5;
139pub const HVM_PARAM_BUFIOREQ_PFN: u32 = 6;
140pub const HVM_PARAM_CONSOLE_PFN: u32 = 17;
141pub const HVM_PARAM_CONSOLE_EVTCHN: u32 = 18;
142pub const HVM_PARAM_PAGING_RING_PFN: u32 = 27;
143pub const HVM_PARAM_MONITOR_RING_PFN: u32 = 28;
144pub const HVM_PARAM_SHARING_RING_PFN: u32 = 29;
145pub const HVM_PARAM_TIMER_MODE: u32 = 10;
146pub const HVM_PARAM_ALTP2M: u32 = 35;
147pub const HVM_PARAM_IDENT_PT: u32 = 12;