debuggers.hg

view xen/include/public/dom0_ops.h @ 10991:7924b6bd728a

Change DOM0_PERFCCONTROL: remove array limit.

Descriptors and values are passed by two distinct buffers.

Signed-off-by: Tristan Gingold <tristan.gingold@bull.net>
author kaf24@firebug.cl.cam.ac.uk
date Mon Aug 07 15:53:06 2006 +0100 (2006-08-07)
parents 306d7857928c
children 0f917d63e960
line source
1 /******************************************************************************
2 * dom0_ops.h
3 *
4 * Process command requests from domain-0 guest OS.
5 *
6 * Copyright (c) 2002-2003, B Dragovic
7 * Copyright (c) 2002-2004, K Fraser
8 */
11 #ifndef __XEN_PUBLIC_DOM0_OPS_H__
12 #define __XEN_PUBLIC_DOM0_OPS_H__
14 #include "xen.h"
15 #include "sched_ctl.h"
17 /*
18 * Make sure you increment the interface version whenever you modify this file!
19 * This makes sure that old versions of dom0 tools will stop working in a
20 * well-defined way (rather than crashing the machine, for instance).
21 */
22 #define DOM0_INTERFACE_VERSION 0x03000001
24 /************************************************************************/
26 #define DOM0_GETMEMLIST 2
27 struct dom0_getmemlist {
28 /* IN variables. */
29 domid_t domain;
30 uint64_t max_pfns;
31 XEN_GUEST_HANDLE(xen_pfn_t) buffer;
32 /* OUT variables. */
33 uint64_t num_pfns;
34 };
35 typedef struct dom0_getmemlist dom0_getmemlist_t;
36 DEFINE_XEN_GUEST_HANDLE(dom0_getmemlist_t);
38 #define DOM0_SCHEDCTL 6
39 /* struct sched_ctl_cmd is from sched-ctl.h */
40 typedef struct sched_ctl_cmd dom0_schedctl_t;
41 DEFINE_XEN_GUEST_HANDLE(dom0_schedctl_t);
43 #define DOM0_ADJUSTDOM 7
44 /* struct sched_adjdom_cmd is from sched-ctl.h */
45 typedef struct sched_adjdom_cmd dom0_adjustdom_t;
46 DEFINE_XEN_GUEST_HANDLE(dom0_adjustdom_t);
48 #define DOM0_CREATEDOMAIN 8
49 struct dom0_createdomain {
50 /* IN parameters */
51 uint32_t ssidref;
52 xen_domain_handle_t handle;
53 /* IN/OUT parameters. */
54 /* Identifier for new domain (auto-allocate if zero is specified). */
55 domid_t domain;
56 };
57 typedef struct dom0_createdomain dom0_createdomain_t;
58 DEFINE_XEN_GUEST_HANDLE(dom0_createdomain_t);
60 #define DOM0_DESTROYDOMAIN 9
61 struct dom0_destroydomain {
62 /* IN variables. */
63 domid_t domain;
64 };
65 typedef struct dom0_destroydomain dom0_destroydomain_t;
66 DEFINE_XEN_GUEST_HANDLE(dom0_destroydomain_t);
68 #define DOM0_PAUSEDOMAIN 10
69 struct dom0_pausedomain {
70 /* IN parameters. */
71 domid_t domain;
72 };
73 typedef struct dom0_pausedomain dom0_pausedomain_t;
74 DEFINE_XEN_GUEST_HANDLE(dom0_pausedomain_t);
76 #define DOM0_UNPAUSEDOMAIN 11
77 struct dom0_unpausedomain {
78 /* IN parameters. */
79 domid_t domain;
80 };
81 typedef struct dom0_unpausedomain dom0_unpausedomain_t;
82 DEFINE_XEN_GUEST_HANDLE(dom0_unpausedomain_t);
84 #define DOM0_GETDOMAININFO 12
85 struct dom0_getdomaininfo {
86 /* IN variables. */
87 domid_t domain; /* NB. IN/OUT variable. */
88 /* OUT variables. */
89 #define DOMFLAGS_DYING (1<<0) /* Domain is scheduled to die. */
90 #define DOMFLAGS_SHUTDOWN (1<<2) /* The guest OS has shut down. */
91 #define DOMFLAGS_PAUSED (1<<3) /* Currently paused by control software. */
92 #define DOMFLAGS_BLOCKED (1<<4) /* Currently blocked pending an event. */
93 #define DOMFLAGS_RUNNING (1<<5) /* Domain is currently running. */
94 #define DOMFLAGS_CPUMASK 255 /* CPU to which this domain is bound. */
95 #define DOMFLAGS_CPUSHIFT 8
96 #define DOMFLAGS_SHUTDOWNMASK 255 /* DOMFLAGS_SHUTDOWN guest-supplied code. */
97 #define DOMFLAGS_SHUTDOWNSHIFT 16
98 uint32_t flags;
99 uint64_t tot_pages;
100 uint64_t max_pages;
101 xen_pfn_t shared_info_frame; /* MFN of shared_info struct */
102 uint64_t cpu_time;
103 uint32_t nr_online_vcpus; /* Number of VCPUs currently online. */
104 uint32_t max_vcpu_id; /* Maximum VCPUID in use by this domain. */
105 uint32_t ssidref;
106 xen_domain_handle_t handle;
107 };
108 typedef struct dom0_getdomaininfo dom0_getdomaininfo_t;
109 DEFINE_XEN_GUEST_HANDLE(dom0_getdomaininfo_t);
111 #define DOM0_SETVCPUCONTEXT 13
112 struct dom0_setvcpucontext {
113 /* IN variables. */
114 domid_t domain;
115 uint32_t vcpu;
116 /* IN/OUT parameters */
117 XEN_GUEST_HANDLE(vcpu_guest_context_t) ctxt;
118 };
119 typedef struct dom0_setvcpucontext dom0_setvcpucontext_t;
120 DEFINE_XEN_GUEST_HANDLE(dom0_setvcpucontext_t);
122 #define DOM0_MSR 15
123 struct dom0_msr {
124 /* IN variables. */
125 uint32_t write;
126 cpumap_t cpu_mask;
127 uint32_t msr;
128 uint32_t in1;
129 uint32_t in2;
130 /* OUT variables. */
131 uint32_t out1;
132 uint32_t out2;
133 };
134 typedef struct dom0_msr dom0_msr_t;
135 DEFINE_XEN_GUEST_HANDLE(dom0_msr_t);
137 /*
138 * Set clock such that it would read <secs,nsecs> after 00:00:00 UTC,
139 * 1 January, 1970 if the current system time was <system_time>.
140 */
141 #define DOM0_SETTIME 17
142 struct dom0_settime {
143 /* IN variables. */
144 uint32_t secs;
145 uint32_t nsecs;
146 uint64_t system_time;
147 };
148 typedef struct dom0_settime dom0_settime_t;
149 DEFINE_XEN_GUEST_HANDLE(dom0_settime_t);
151 #define DOM0_GETPAGEFRAMEINFO 18
152 #define LTAB_SHIFT 28
153 #define NOTAB 0 /* normal page */
154 #define L1TAB (1<<LTAB_SHIFT)
155 #define L2TAB (2<<LTAB_SHIFT)
156 #define L3TAB (3<<LTAB_SHIFT)
157 #define L4TAB (4<<LTAB_SHIFT)
158 #define LPINTAB (1<<31)
159 #define XTAB (0xf<<LTAB_SHIFT) /* invalid page */
160 #define LTAB_MASK XTAB
161 #define LTABTYPE_MASK (0x7<<LTAB_SHIFT)
163 struct dom0_getpageframeinfo {
164 /* IN variables. */
165 xen_pfn_t gmfn; /* GMFN to query. */
166 domid_t domain; /* To which domain does the frame belong? */
167 /* OUT variables. */
168 /* Is the page PINNED to a type? */
169 uint32_t type; /* see above type defs */
170 };
171 typedef struct dom0_getpageframeinfo dom0_getpageframeinfo_t;
172 DEFINE_XEN_GUEST_HANDLE(dom0_getpageframeinfo_t);
174 /*
175 * Read console content from Xen buffer ring.
176 */
177 #define DOM0_READCONSOLE 19
178 struct dom0_readconsole {
179 /* IN variables. */
180 uint32_t clear; /* Non-zero -> clear after reading. */
181 XEN_GUEST_HANDLE(char) buffer; /* Buffer start */
182 /* IN/OUT variables. */
183 uint32_t count; /* In: Buffer size; Out: Used buffer size */
184 };
185 typedef struct dom0_readconsole dom0_readconsole_t;
186 DEFINE_XEN_GUEST_HANDLE(dom0_readconsole_t);
188 /*
189 * Set which physical cpus a vcpu can execute on.
190 */
191 #define DOM0_SETVCPUAFFINITY 20
192 struct dom0_setvcpuaffinity {
193 /* IN variables. */
194 domid_t domain;
195 uint32_t vcpu;
196 cpumap_t cpumap;
197 };
198 typedef struct dom0_setvcpuaffinity dom0_setvcpuaffinity_t;
199 DEFINE_XEN_GUEST_HANDLE(dom0_setvcpuaffinity_t);
201 /* Get trace buffers machine base address */
202 #define DOM0_TBUFCONTROL 21
203 struct dom0_tbufcontrol {
204 /* IN variables */
205 #define DOM0_TBUF_GET_INFO 0
206 #define DOM0_TBUF_SET_CPU_MASK 1
207 #define DOM0_TBUF_SET_EVT_MASK 2
208 #define DOM0_TBUF_SET_SIZE 3
209 #define DOM0_TBUF_ENABLE 4
210 #define DOM0_TBUF_DISABLE 5
211 uint32_t op;
212 /* IN/OUT variables */
213 cpumap_t cpu_mask;
214 uint32_t evt_mask;
215 /* OUT variables */
216 xen_pfn_t buffer_mfn;
217 uint32_t size;
218 };
219 typedef struct dom0_tbufcontrol dom0_tbufcontrol_t;
220 DEFINE_XEN_GUEST_HANDLE(dom0_tbufcontrol_t);
222 /*
223 * Get physical information about the host machine
224 */
225 #define DOM0_PHYSINFO 22
226 struct dom0_physinfo {
227 uint32_t threads_per_core;
228 uint32_t cores_per_socket;
229 uint32_t sockets_per_node;
230 uint32_t nr_nodes;
231 uint32_t cpu_khz;
232 uint64_t total_pages;
233 uint64_t free_pages;
234 uint64_t scrub_pages;
235 uint32_t hw_cap[8];
236 };
237 typedef struct dom0_physinfo dom0_physinfo_t;
238 DEFINE_XEN_GUEST_HANDLE(dom0_physinfo_t);
240 /*
241 * Get the ID of the current scheduler.
242 */
243 #define DOM0_SCHED_ID 24
244 struct dom0_sched_id {
245 /* OUT variable */
246 uint32_t sched_id;
247 };
248 typedef struct dom0_physinfo dom0_sched_id_t;
249 DEFINE_XEN_GUEST_HANDLE(dom0_sched_id_t);
251 /*
252 * Control shadow pagetables operation
253 */
254 #define DOM0_SHADOW_CONTROL 25
256 #define DOM0_SHADOW_CONTROL_OP_OFF 0
257 #define DOM0_SHADOW_CONTROL_OP_ENABLE_TEST 1
258 #define DOM0_SHADOW_CONTROL_OP_ENABLE_LOGDIRTY 2
259 #define DOM0_SHADOW_CONTROL_OP_ENABLE_TRANSLATE 3
261 #define DOM0_SHADOW_CONTROL_OP_FLUSH 10 /* table ops */
262 #define DOM0_SHADOW_CONTROL_OP_CLEAN 11
263 #define DOM0_SHADOW_CONTROL_OP_PEEK 12
265 struct dom0_shadow_control_stats {
266 uint32_t fault_count;
267 uint32_t dirty_count;
268 uint32_t dirty_net_count;
269 uint32_t dirty_block_count;
270 };
271 typedef struct dom0_shadow_control_stats dom0_shadow_control_stats_t;
272 DEFINE_XEN_GUEST_HANDLE(dom0_shadow_control_stats_t);
274 struct dom0_shadow_control {
275 /* IN variables. */
276 domid_t domain;
277 uint32_t op;
278 XEN_GUEST_HANDLE(ulong) dirty_bitmap;
279 /* IN/OUT variables. */
280 uint64_t pages; /* size of buffer, updated with actual size */
281 /* OUT variables. */
282 struct dom0_shadow_control_stats stats;
283 };
284 typedef struct dom0_shadow_control dom0_shadow_control_t;
285 DEFINE_XEN_GUEST_HANDLE(dom0_shadow_control_t);
287 #define DOM0_SETDOMAINMAXMEM 28
288 struct dom0_setdomainmaxmem {
289 /* IN variables. */
290 domid_t domain;
291 uint64_t max_memkb;
292 };
293 typedef struct dom0_setdomainmaxmem dom0_setdomainmaxmem_t;
294 DEFINE_XEN_GUEST_HANDLE(dom0_setdomainmaxmem_t);
296 #define DOM0_GETPAGEFRAMEINFO2 29 /* batched interface */
297 struct dom0_getpageframeinfo2 {
298 /* IN variables. */
299 domid_t domain;
300 uint64_t num;
301 /* IN/OUT variables. */
302 XEN_GUEST_HANDLE(ulong) array;
303 };
304 typedef struct dom0_getpageframeinfo2 dom0_getpageframeinfo2_t;
305 DEFINE_XEN_GUEST_HANDLE(dom0_getpageframeinfo2_t);
307 /*
308 * Request memory range (@mfn, @mfn+@nr_mfns-1) to have type @type.
309 * On x86, @type is an architecture-defined MTRR memory type.
310 * On success, returns the MTRR that was used (@reg) and a handle that can
311 * be passed to DOM0_DEL_MEMTYPE to accurately tear down the new setting.
312 * (x86-specific).
313 */
314 #define DOM0_ADD_MEMTYPE 31
315 struct dom0_add_memtype {
316 /* IN variables. */
317 xen_pfn_t mfn;
318 uint64_t nr_mfns;
319 uint32_t type;
320 /* OUT variables. */
321 uint32_t handle;
322 uint32_t reg;
323 };
324 typedef struct dom0_add_memtype dom0_add_memtype_t;
325 DEFINE_XEN_GUEST_HANDLE(dom0_add_memtype_t);
327 /*
328 * Tear down an existing memory-range type. If @handle is remembered then it
329 * should be passed in to accurately tear down the correct setting (in case
330 * of overlapping memory regions with differing types). If it is not known
331 * then @handle should be set to zero. In all cases @reg must be set.
332 * (x86-specific).
333 */
334 #define DOM0_DEL_MEMTYPE 32
335 struct dom0_del_memtype {
336 /* IN variables. */
337 uint32_t handle;
338 uint32_t reg;
339 };
340 typedef struct dom0_del_memtype dom0_del_memtype_t;
341 DEFINE_XEN_GUEST_HANDLE(dom0_del_memtype_t);
343 /* Read current type of an MTRR (x86-specific). */
344 #define DOM0_READ_MEMTYPE 33
345 struct dom0_read_memtype {
346 /* IN variables. */
347 uint32_t reg;
348 /* OUT variables. */
349 xen_pfn_t mfn;
350 uint64_t nr_mfns;
351 uint32_t type;
352 };
353 typedef struct dom0_read_memtype dom0_read_memtype_t;
354 DEFINE_XEN_GUEST_HANDLE(dom0_read_memtype_t);
356 /* Interface for controlling Xen software performance counters. */
357 #define DOM0_PERFCCONTROL 34
358 /* Sub-operations: */
359 #define DOM0_PERFCCONTROL_OP_RESET 1 /* Reset all counters to zero. */
360 #define DOM0_PERFCCONTROL_OP_QUERY 2 /* Get perfctr information. */
361 struct dom0_perfc_desc {
362 char name[80]; /* name of perf counter */
363 uint32_t nr_vals; /* number of values for this counter */
364 };
365 typedef struct dom0_perfc_desc dom0_perfc_desc_t;
366 DEFINE_XEN_GUEST_HANDLE(dom0_perfc_desc_t);
367 typedef uint32_t dom0_perfc_val_t;
368 DEFINE_XEN_GUEST_HANDLE(dom0_perfc_val_t);
370 struct dom0_perfccontrol {
371 /* IN variables. */
372 uint32_t op; /* DOM0_PERFCCONTROL_OP_??? */
373 /* OUT variables. */
374 uint32_t nr_counters; /* number of counters description */
375 uint32_t nr_vals; /* number of values */
376 XEN_GUEST_HANDLE(dom0_perfc_desc_t) desc; /* counter information (or NULL) */
377 XEN_GUEST_HANDLE(dom0_perfc_val_t) val; /* counter values (or NULL) */
378 };
379 typedef struct dom0_perfccontrol dom0_perfccontrol_t;
380 DEFINE_XEN_GUEST_HANDLE(dom0_perfccontrol_t);
382 #define DOM0_MICROCODE 35
383 struct dom0_microcode {
384 /* IN variables. */
385 XEN_GUEST_HANDLE(void) data; /* Pointer to microcode data */
386 uint32_t length; /* Length of microcode data. */
387 };
388 typedef struct dom0_microcode dom0_microcode_t;
389 DEFINE_XEN_GUEST_HANDLE(dom0_microcode_t);
391 #define DOM0_IOPORT_PERMISSION 36
392 struct dom0_ioport_permission {
393 domid_t domain; /* domain to be affected */
394 uint32_t first_port; /* first port int range */
395 uint32_t nr_ports; /* size of port range */
396 uint8_t allow_access; /* allow or deny access to range? */
397 };
398 typedef struct dom0_ioport_permission dom0_ioport_permission_t;
399 DEFINE_XEN_GUEST_HANDLE(dom0_ioport_permission_t);
401 #define DOM0_GETVCPUCONTEXT 37
402 struct dom0_getvcpucontext {
403 /* IN variables. */
404 domid_t domain; /* domain to be affected */
405 uint32_t vcpu; /* vcpu # */
406 /* OUT variables. */
407 XEN_GUEST_HANDLE(vcpu_guest_context_t) ctxt;
408 };
409 typedef struct dom0_getvcpucontext dom0_getvcpucontext_t;
410 DEFINE_XEN_GUEST_HANDLE(dom0_getvcpucontext_t);
412 #define DOM0_GETVCPUINFO 43
413 struct dom0_getvcpuinfo {
414 /* IN variables. */
415 domid_t domain; /* domain to be affected */
416 uint32_t vcpu; /* vcpu # */
417 /* OUT variables. */
418 uint8_t online; /* currently online (not hotplugged)? */
419 uint8_t blocked; /* blocked waiting for an event? */
420 uint8_t running; /* currently scheduled on its CPU? */
421 uint64_t cpu_time; /* total cpu time consumed (ns) */
422 uint32_t cpu; /* current mapping */
423 cpumap_t cpumap; /* allowable mapping */
424 };
425 typedef struct dom0_getvcpuinfo dom0_getvcpuinfo_t;
426 DEFINE_XEN_GUEST_HANDLE(dom0_getvcpuinfo_t);
428 #define DOM0_GETDOMAININFOLIST 38
429 struct dom0_getdomaininfolist {
430 /* IN variables. */
431 domid_t first_domain;
432 uint32_t max_domains;
433 XEN_GUEST_HANDLE(dom0_getdomaininfo_t) buffer;
434 /* OUT variables. */
435 uint32_t num_domains;
436 };
437 typedef struct dom0_getdomaininfolist dom0_getdomaininfolist_t;
438 DEFINE_XEN_GUEST_HANDLE(dom0_getdomaininfolist_t);
440 #define DOM0_PLATFORM_QUIRK 39
441 #define QUIRK_NOIRQBALANCING 1 /* Do not restrict IO-APIC RTE targets */
442 #define QUIRK_IOAPIC_BAD_REGSEL 2 /* IO-APIC REGSEL forgets its value */
443 #define QUIRK_IOAPIC_GOOD_REGSEL 3 /* IO-APIC REGSEL behaves properly */
444 struct dom0_platform_quirk {
445 /* IN variables. */
446 uint32_t quirk_id;
447 };
448 typedef struct dom0_platform_quirk dom0_platform_quirk_t;
449 DEFINE_XEN_GUEST_HANDLE(dom0_platform_quirk_t);
451 #define DOM0_PHYSICAL_MEMORY_MAP 40 /* Unimplemented from 3.0.3 onwards */
452 struct dom0_memory_map_entry {
453 uint64_t start, end;
454 uint32_t flags; /* reserved */
455 uint8_t is_ram;
456 };
457 typedef struct dom0_memory_map_entry dom0_memory_map_entry_t;
458 DEFINE_XEN_GUEST_HANDLE(dom0_memory_map_entry_t);
460 struct dom0_physical_memory_map {
461 /* IN variables. */
462 uint32_t max_map_entries;
463 /* OUT variables. */
464 uint32_t nr_map_entries;
465 XEN_GUEST_HANDLE(dom0_memory_map_entry_t) memory_map;
466 };
467 typedef struct dom0_physical_memory_map dom0_physical_memory_map_t;
468 DEFINE_XEN_GUEST_HANDLE(dom0_physical_memory_map_t);
470 #define DOM0_MAX_VCPUS 41
471 struct dom0_max_vcpus {
472 domid_t domain; /* domain to be affected */
473 uint32_t max; /* maximum number of vcpus */
474 };
475 typedef struct dom0_max_vcpus dom0_max_vcpus_t;
476 DEFINE_XEN_GUEST_HANDLE(dom0_max_vcpus_t);
478 #define DOM0_SETDOMAINHANDLE 44
479 struct dom0_setdomainhandle {
480 domid_t domain;
481 xen_domain_handle_t handle;
482 };
483 typedef struct dom0_setdomainhandle dom0_setdomainhandle_t;
484 DEFINE_XEN_GUEST_HANDLE(dom0_setdomainhandle_t);
486 #define DOM0_SETDEBUGGING 45
487 struct dom0_setdebugging {
488 domid_t domain;
489 uint8_t enable;
490 };
491 typedef struct dom0_setdebugging dom0_setdebugging_t;
492 DEFINE_XEN_GUEST_HANDLE(dom0_setdebugging_t);
494 #define DOM0_IRQ_PERMISSION 46
495 struct dom0_irq_permission {
496 domid_t domain; /* domain to be affected */
497 uint8_t pirq;
498 uint8_t allow_access; /* flag to specify enable/disable of IRQ access */
499 };
500 typedef struct dom0_irq_permission dom0_irq_permission_t;
501 DEFINE_XEN_GUEST_HANDLE(dom0_irq_permission_t);
503 #define DOM0_IOMEM_PERMISSION 47
504 struct dom0_iomem_permission {
505 domid_t domain; /* domain to be affected */
506 xen_pfn_t first_mfn; /* first page (physical page number) in range */
507 uint64_t nr_mfns; /* number of pages in range (>0) */
508 uint8_t allow_access; /* allow (!0) or deny (0) access to range? */
509 };
510 typedef struct dom0_iomem_permission dom0_iomem_permission_t;
511 DEFINE_XEN_GUEST_HANDLE(dom0_iomem_permission_t);
513 #define DOM0_HYPERCALL_INIT 48
514 struct dom0_hypercall_init {
515 domid_t domain; /* domain to be affected */
516 xen_pfn_t gmfn; /* GMFN to be initialised */
517 };
518 typedef struct dom0_hypercall_init dom0_hypercall_init_t;
519 DEFINE_XEN_GUEST_HANDLE(dom0_hypercall_init_t);
521 #define DOM0_DOMAIN_SETUP 49
522 #define _XEN_DOMAINSETUP_hvm_guest 0
523 #define XEN_DOMAINSETUP_hvm_guest (1UL<<_XEN_DOMAINSETUP_hvm_guest)
524 #define _XEN_DOMAINSETUP_query 1 /* Get parameters (for save) */
525 #define XEN_DOMAINSETUP_query (1UL<<_XEN_DOMAINSETUP_query)
526 typedef struct dom0_domain_setup {
527 domid_t domain; /* domain to be affected */
528 unsigned long flags; /* XEN_DOMAINSETUP_* */
529 #ifdef __ia64__
530 unsigned long bp; /* mpaddr of boot param area */
531 unsigned long maxmem; /* Highest memory address for MDT. */
532 unsigned long xsi_va; /* Xen shared_info area virtual address. */
533 unsigned int hypercall_imm; /* Break imm for Xen hypercalls. */
534 #endif
535 } dom0_domain_setup_t;
536 DEFINE_XEN_GUEST_HANDLE(dom0_domain_setup_t);
538 #define DOM0_SETTIMEOFFSET 50
539 struct dom0_settimeoffset {
540 domid_t domain;
541 int32_t time_offset_seconds; /* applied to domain wallclock time */
542 };
543 typedef struct dom0_settimeoffset dom0_settimeoffset_t;
544 DEFINE_XEN_GUEST_HANDLE(dom0_settimeoffset_t);
546 struct dom0_op {
547 uint32_t cmd;
548 uint32_t interface_version; /* DOM0_INTERFACE_VERSION */
549 union {
550 struct dom0_createdomain createdomain;
551 struct dom0_pausedomain pausedomain;
552 struct dom0_unpausedomain unpausedomain;
553 struct dom0_destroydomain destroydomain;
554 struct dom0_getmemlist getmemlist;
555 struct sched_ctl_cmd schedctl;
556 struct sched_adjdom_cmd adjustdom;
557 struct dom0_setvcpucontext setvcpucontext;
558 struct dom0_getdomaininfo getdomaininfo;
559 struct dom0_getpageframeinfo getpageframeinfo;
560 struct dom0_msr msr;
561 struct dom0_settime settime;
562 struct dom0_readconsole readconsole;
563 struct dom0_setvcpuaffinity setvcpuaffinity;
564 struct dom0_tbufcontrol tbufcontrol;
565 struct dom0_physinfo physinfo;
566 struct dom0_sched_id sched_id;
567 struct dom0_shadow_control shadow_control;
568 struct dom0_setdomainmaxmem setdomainmaxmem;
569 struct dom0_getpageframeinfo2 getpageframeinfo2;
570 struct dom0_add_memtype add_memtype;
571 struct dom0_del_memtype del_memtype;
572 struct dom0_read_memtype read_memtype;
573 struct dom0_perfccontrol perfccontrol;
574 struct dom0_microcode microcode;
575 struct dom0_ioport_permission ioport_permission;
576 struct dom0_getvcpucontext getvcpucontext;
577 struct dom0_getvcpuinfo getvcpuinfo;
578 struct dom0_getdomaininfolist getdomaininfolist;
579 struct dom0_platform_quirk platform_quirk;
580 struct dom0_physical_memory_map physical_memory_map;
581 struct dom0_max_vcpus max_vcpus;
582 struct dom0_setdomainhandle setdomainhandle;
583 struct dom0_setdebugging setdebugging;
584 struct dom0_irq_permission irq_permission;
585 struct dom0_iomem_permission iomem_permission;
586 struct dom0_hypercall_init hypercall_init;
587 struct dom0_domain_setup domain_setup;
588 struct dom0_settimeoffset settimeoffset;
589 uint8_t pad[128];
590 } u;
591 };
592 typedef struct dom0_op dom0_op_t;
593 DEFINE_XEN_GUEST_HANDLE(dom0_op_t);
595 #endif /* __XEN_PUBLIC_DOM0_OPS_H__ */
597 /*
598 * Local variables:
599 * mode: C
600 * c-set-style: "BSD"
601 * c-basic-offset: 4
602 * tab-width: 4
603 * indent-tabs-mode: nil
604 * End:
605 */