Handle gcc __builtin_strcmp using 128/256 bit vectors with sse4.1, avx/avx2
[valgrind.git] / include / vki / vki-xen-sysctl.h
blob5f68b0eafa0394041b5aa132f217cd4470febf9a
1 #ifndef __VKI_XEN_SYSCTL_H
2 #define __VKI_XEN_SYSCTL_H
4 /*
5 * The sysctl interface is versioned via the interface_version
6 * field. This structures in this header supports sysctl interfaces:
8 * - 0x00000008: Xen 4.1
9 * - 0x00000009: Xen 4.2
10 * - 0x0000000a: Xen 4.3 & 4.4
11 * - 0x0000000b: Xen 4.5
13 * When adding a new subop be sure to include the variants used by all
14 * of the above, both here and in syswrap-xen.c
16 * Structs which are identical in all supported versions have no
17 * version suffix. Structs which do differ are defined multiple times
18 * and use the suffix of the latest version to contain that particular
19 * variant.
22 #define VKI_XEN_SYSCTL_readconsole 1
23 #define VKI_XEN_SYSCTL_tbuf_op 2
24 #define VKI_XEN_SYSCTL_physinfo 3
25 #define VKI_XEN_SYSCTL_sched_id 4
26 #define VKI_XEN_SYSCTL_perfc_op 5
27 #define VKI_XEN_SYSCTL_getdomaininfolist 6
28 #define VKI_XEN_SYSCTL_debug_keys 7
29 #define VKI_XEN_SYSCTL_getcpuinfo 8
30 #define VKI_XEN_SYSCTL_availheap 9
31 #define VKI_XEN_SYSCTL_get_pmstat 10
32 #define VKI_XEN_SYSCTL_cpu_hotplug 11
33 #define VKI_XEN_SYSCTL_pm_op 12
34 #define VKI_XEN_SYSCTL_page_offline_op 14
35 #define VKI_XEN_SYSCTL_lockprof_op 15
36 #define VKI_XEN_SYSCTL_topologyinfo 16
37 #define VKI_XEN_SYSCTL_numainfo 17
38 #define VKI_XEN_SYSCTL_cpupool_op 18
39 #define VKI_XEN_SYSCTL_scheduler_op 19
40 #define VKI_XEN_SYSCTL_coverage_op 20
42 struct vki_xen_sysctl_readconsole {
43 /* IN */
44 vki_uint8_t clear;
45 vki_uint8_t incremental;
47 vki_uint8_t pad0, pad1;
50 * IN: Start index for consumption if @incremental.
51 * OUT: End index after consuming from the console.
53 vki_uint32_t index;
54 VKI_XEN_GUEST_HANDLE_64(char) buffer; /* IN */
57 * IN: size of buffer.
58 * OUT: bytes written into buffer.
60 vki_uint32_t count;
63 struct vki_xen_sysctl_getdomaininfolist_00000008 {
64 /* IN variables. */
65 vki_xen_domid_t first_domain;
66 vki_uint32_t max_domains;
67 VKI_XEN_GUEST_HANDLE_64(vki_xen_domctl_getdomaininfo_00000007_t) buffer;
68 /* OUT variables. */
69 vki_uint32_t num_domains;
72 struct vki_xen_sysctl_getdomaininfolist_00000009 {
73 /* IN variables. */
74 vki_xen_domid_t first_domain;
75 vki_uint32_t max_domains;
76 VKI_XEN_GUEST_HANDLE_64(vki_xen_domctl_getdomaininfo_00000008_t) buffer;
77 /* OUT variables. */
78 vki_uint32_t num_domains;
81 struct vki_xen_sysctl_getdomaininfolist_0000000a {
82 /* IN variables. */
83 vki_xen_domid_t first_domain;
84 vki_uint32_t max_domains;
85 VKI_XEN_GUEST_HANDLE_64(vki_xen_domctl_getdomaininfo_00000009_t) buffer;
86 /* OUT variables. */
87 vki_uint32_t num_domains;
90 struct vki_xen_sysctl_getdomaininfolist_00000010 {
91 /* IN variables. */
92 vki_xen_domid_t first_domain;
93 vki_uint32_t max_domains;
94 VKI_XEN_GUEST_HANDLE_64(vki_xen_domctl_getdomaininfo_00000010_t) buffer;
95 /* OUT variables. */
96 vki_uint32_t num_domains;
99 /* vki_xen_sysctl_getdomaininfolist_0000000b is the same as 0000000a */
101 #define VKI_XEN_SYSCTL_CPUPOOL_OP_CREATE 1 /* C */
102 #define VKI_XEN_SYSCTL_CPUPOOL_OP_DESTROY 2 /* D */
103 #define VKI_XEN_SYSCTL_CPUPOOL_OP_INFO 3 /* I */
104 #define VKI_XEN_SYSCTL_CPUPOOL_OP_ADDCPU 4 /* A */
105 #define VKI_XEN_SYSCTL_CPUPOOL_OP_RMCPU 5 /* R */
106 #define VKI_XEN_SYSCTL_CPUPOOL_OP_MOVEDOMAIN 6 /* M */
107 #define VKI_XEN_SYSCTL_CPUPOOL_OP_FREEINFO 7 /* F */
108 #define VKI_XEN_SYSCTL_CPUPOOL_PAR_ANY 0xFFFFFFFF
109 struct vki_xen_sysctl_cpupool_op {
110 vki_uint32_t op; /* IN */
111 vki_uint32_t cpupool_id; /* IN: CDIARM OUT: CI */
112 vki_uint32_t sched_id; /* IN: C OUT: I */
113 vki_uint32_t domid; /* IN: M */
114 vki_uint32_t cpu; /* IN: AR */
115 vki_uint32_t n_dom; /* OUT: I */
116 struct vki_xenctl_bitmap cpumap; /* OUT: IF */
119 struct vki_xen_sysctl_debug_keys {
120 /* IN variables. */
121 VKI_XEN_GUEST_HANDLE_64(char) keys;
122 vki_uint32_t nr_keys;
125 struct vki_xen_sysctl_topologyinfo {
126 vki_uint32_t max_cpu_index;
127 VKI_XEN_GUEST_HANDLE_64(vki_uint32) cpu_to_core;
128 VKI_XEN_GUEST_HANDLE_64(vki_uint32) cpu_to_socket;
129 VKI_XEN_GUEST_HANDLE_64(vki_uint32) cpu_to_node;
132 struct vki_xen_sysctl_numainfo {
133 vki_uint32_t max_node_index;
134 VKI_XEN_GUEST_HANDLE_64(vki_uint64) node_to_memsize;
135 VKI_XEN_GUEST_HANDLE_64(vki_uint64) node_to_memfree;
136 VKI_XEN_GUEST_HANDLE_64(vki_uint32) node_to_node_distance;
138 struct vki_xen_sysctl_physinfo_00000008 {
139 vki_uint32_t threads_per_core;
140 vki_uint32_t cores_per_socket;
141 vki_uint32_t nr_cpus; /* # CPUs currently online */
142 vki_uint32_t max_cpu_id; /* Largest possible CPU ID on this host */
143 vki_uint32_t nr_nodes; /* # nodes currently online */
144 vki_uint32_t max_node_id; /* Largest possible node ID on this host */
145 vki_uint32_t cpu_khz;
146 vki_xen_uint64_aligned_t total_pages;
147 vki_xen_uint64_aligned_t free_pages;
148 vki_xen_uint64_aligned_t scrub_pages;
149 vki_uint32_t hw_cap[8];
151 vki_uint32_t capabilities;
154 struct vki_xen_sysctl_physinfo_0000000a {
155 vki_uint32_t threads_per_core;
156 vki_uint32_t cores_per_socket;
157 vki_uint32_t nr_cpus; /* # CPUs currently online */
158 vki_uint32_t max_cpu_id; /* Largest possible CPU ID on this host */
159 vki_uint32_t nr_nodes; /* # nodes currently online */
160 vki_uint32_t max_node_id; /* Largest possible node ID on this host */
161 vki_uint32_t cpu_khz;
162 vki_xen_uint64_aligned_t total_pages;
163 vki_xen_uint64_aligned_t free_pages;
164 vki_xen_uint64_aligned_t scrub_pages;
165 vki_xen_uint64_aligned_t outstanding_pages;
166 vki_uint32_t hw_cap[8];
168 vki_uint32_t capabilities;
171 struct vki_xen_sysctl_physinfo_00000010 {
172 vki_uint32_t threads_per_core;
173 vki_uint32_t cores_per_socket;
174 vki_uint32_t nr_cpus; /* # CPUs currently online */
175 vki_uint32_t max_cpu_id; /* Largest possible CPU ID on this host */
176 vki_uint32_t nr_nodes; /* # nodes currently online */
177 vki_uint32_t max_node_id; /* Largest possible node ID on this host */
178 vki_uint32_t cpu_khz;
179 vki_uint32_t capabilities;
180 vki_xen_uint64_aligned_t total_pages;
181 vki_xen_uint64_aligned_t free_pages;
182 vki_xen_uint64_aligned_t scrub_pages;
183 vki_xen_uint64_aligned_t outstanding_pages;
184 vki_xen_uint64_aligned_t max_mfn;
185 vki_uint32_t hw_cap[8];
189 struct vki_xen_sysctl_sched_id {
190 /* OUT variable. */
191 vki_uint32_t sched_id;
194 struct vki_xen_sysctl {
195 vki_uint32_t cmd;
196 vki_uint32_t interface_version; /* XEN_SYSCTL_INTERFACE_VERSION */
197 union {
198 struct vki_xen_sysctl_readconsole readconsole;
199 //struct vki_xen_sysctl_tbuf_op tbuf_op;
200 struct vki_xen_sysctl_physinfo_00000008 physinfo_00000008;
201 struct vki_xen_sysctl_physinfo_0000000a physinfo_0000000a;
202 struct vki_xen_sysctl_physinfo_00000010 physinfo_00000010;
203 struct vki_xen_sysctl_topologyinfo topologyinfo;
204 struct vki_xen_sysctl_numainfo numainfo;
205 struct vki_xen_sysctl_sched_id sched_id;
206 //struct vki_xen_sysctl_perfc_op perfc_op;
207 struct vki_xen_sysctl_getdomaininfolist_00000008 getdomaininfolist_00000008;
208 struct vki_xen_sysctl_getdomaininfolist_00000009 getdomaininfolist_00000009;
209 struct vki_xen_sysctl_getdomaininfolist_0000000a getdomaininfolist_0000000a;
210 struct vki_xen_sysctl_getdomaininfolist_00000010 getdomaininfolist_00000010;
211 struct vki_xen_sysctl_debug_keys debug_keys;
212 //struct vki_xen_sysctl_getcpuinfo getcpuinfo;
213 //struct vki_xen_sysctl_availheap availheap;
214 //struct vki_xen_sysctl_get_pmstat get_pmstat;
215 //struct vki_xen_sysctl_cpu_hotplug cpu_hotplug;
216 //struct vki_xen_sysctl_pm_op pm_op;
217 //struct vki_xen_sysctl_page_offline_op page_offline;
218 //struct vki_xen_sysctl_lockprof_op lockprof_op;
219 struct vki_xen_sysctl_cpupool_op cpupool_op;
220 //struct vki_xen_sysctl_scheduler_op scheduler_op;
221 //struct vki_xen_sysctl_coverage_op coverage_op;
223 vki_uint8_t pad[128];
224 } u;
227 #endif // __VKI_XEN_SYSCTL_H
229 /*--------------------------------------------------------------------*/
230 /*--- end ---*/
231 /*--------------------------------------------------------------------*/