ia64/xen-unstable
changeset 4430:344290c77cab
bitkeeper revision 1.1236.1.190 (424d7799Fdmy2lgwgEC3NOA1bzXAfg)
Un-PACK the dom0_op structures and bump the interface version number.
Signed-off-by: Keir Fraser <keir@xensource.com>
Un-PACK the dom0_op structures and bump the interface version number.
Signed-off-by: Keir Fraser <keir@xensource.com>
author | kaf24@firebug.cl.cam.ac.uk |
---|---|
date | Fri Apr 01 16:32:25 2005 +0000 (2005-04-01) |
parents | b0da7900bbbb |
children | 7535a4b0ae76 |
files | xen/include/public/dom0_ops.h |
line diff
1.1 --- a/xen/include/public/dom0_ops.h Fri Apr 01 16:31:40 2005 +0000 1.2 +++ b/xen/include/public/dom0_ops.h Fri Apr 01 16:32:25 2005 +0000 1.3 @@ -19,24 +19,19 @@ 1.4 * This makes sure that old versions of dom0 tools will stop working in a 1.5 * well-defined way (rather than crashing the machine, for instance). 1.6 */ 1.7 -#define DOM0_INTERFACE_VERSION 0xAAAA1002 1.8 +#define DOM0_INTERFACE_VERSION 0xAAAA1003 1.9 1.10 /************************************************************************/ 1.11 1.12 #define DOM0_GETMEMLIST 2 1.13 typedef struct { 1.14 /* IN variables. */ 1.15 - domid_t domain; /* 0 */ 1.16 - u16 __pad0; 1.17 - u32 __pad1; 1.18 - memory_t max_pfns; /* 8 */ 1.19 - MEMORY_PADDING; 1.20 - void *buffer; /* 16 */ 1.21 - MEMORY_PADDING; 1.22 + domid_t domain; 1.23 + memory_t max_pfns; 1.24 + void *buffer; 1.25 /* OUT variables. */ 1.26 - memory_t num_pfns; /* 24 */ 1.27 - MEMORY_PADDING; 1.28 -} PACKED dom0_getmemlist_t; /* 32 bytes */ 1.29 + memory_t num_pfns; 1.30 +} dom0_getmemlist_t; 1.31 1.32 #define DOM0_SCHEDCTL 6 1.33 /* struct sched_ctl_cmd is from sched-ctl.h */ 1.34 @@ -49,42 +44,36 @@ typedef struct sched_adjdom_cmd dom0_adj 1.35 #define DOM0_CREATEDOMAIN 8 1.36 typedef struct { 1.37 /* IN parameters. */ 1.38 - memory_t memory_kb; /* 0 */ 1.39 - MEMORY_PADDING; 1.40 - u32 cpu; /* 8 */ 1.41 - u32 __pad0; /* 12 */ 1.42 + memory_t memory_kb; 1.43 + u32 cpu; 1.44 /* IN/OUT parameters. */ 1.45 /* If 0, domain is allocated. If non-zero use it unless in use. */ 1.46 - domid_t domain; /* 16 */ 1.47 - u16 __pad1; 1.48 + domid_t domain; 1.49 /* OUT parameters. */ 1.50 -} PACKED dom0_createdomain_t; /* 20 bytes */ 1.51 +} dom0_createdomain_t; 1.52 1.53 #define DOM0_DESTROYDOMAIN 9 1.54 typedef struct { 1.55 /* IN variables. */ 1.56 - domid_t domain; /* 0 */ 1.57 - u16 __pad; 1.58 -} PACKED dom0_destroydomain_t; /* 4 bytes */ 1.59 + domid_t domain; 1.60 +} dom0_destroydomain_t; 1.61 1.62 #define DOM0_PAUSEDOMAIN 10 1.63 typedef struct { 1.64 /* IN parameters. */ 1.65 - domid_t domain; /* 0 */ 1.66 - u16 __pad; 1.67 -} PACKED dom0_pausedomain_t; /* 4 bytes */ 1.68 + domid_t domain; 1.69 +} dom0_pausedomain_t; 1.70 1.71 #define DOM0_UNPAUSEDOMAIN 11 1.72 typedef struct { 1.73 /* IN parameters. */ 1.74 - domid_t domain; /* 0 */ 1.75 - u16 __pad; 1.76 -} PACKED dom0_unpausedomain_t; /* 4 bytes */ 1.77 + domid_t domain; 1.78 +} dom0_unpausedomain_t; 1.79 1.80 #define DOM0_GETDOMAININFO 12 1.81 typedef struct { 1.82 /* IN variables. */ 1.83 - domid_t domain; /* 0 */ /* NB. IN/OUT variable. */ 1.84 + domid_t domain; /* NB. IN/OUT variable. */ 1.85 u16 exec_domain; 1.86 /* OUT variables. */ 1.87 #define DOMFLAGS_DYING (1<<0) /* Domain is scheduled to die. */ 1.88 @@ -97,57 +86,50 @@ typedef struct { 1.89 #define DOMFLAGS_CPUSHIFT 8 1.90 #define DOMFLAGS_SHUTDOWNMASK 255 /* DOMFLAGS_SHUTDOWN guest-supplied code. */ 1.91 #define DOMFLAGS_SHUTDOWNSHIFT 16 1.92 - u32 flags; /* 4 */ 1.93 - full_execution_context_t *ctxt; /* 8 */ /* NB. IN/OUT variable. */ 1.94 - MEMORY_PADDING; 1.95 - memory_t tot_pages; /* 16 */ 1.96 - MEMORY_PADDING; 1.97 - memory_t max_pages; /* 24 */ 1.98 - MEMORY_PADDING; 1.99 - memory_t shared_info_frame; /* 32: MFN of shared_info struct */ 1.100 - MEMORY_PADDING; 1.101 - u64 cpu_time; /* 40 */ 1.102 -} PACKED dom0_getdomaininfo_t; /* 48 bytes */ 1.103 + u32 flags; 1.104 + full_execution_context_t *ctxt; /* NB. IN/OUT variable. */ 1.105 + memory_t tot_pages; 1.106 + memory_t max_pages; 1.107 + memory_t shared_info_frame; /* MFN of shared_info struct */ 1.108 + u64 cpu_time; 1.109 +} dom0_getdomaininfo_t; 1.110 1.111 #define DOM0_SETDOMAININFO 13 1.112 typedef struct { 1.113 /* IN variables. */ 1.114 - domid_t domain; /* 0 */ 1.115 - u16 exec_domain; /* 2 */ 1.116 - u32 __pad0; /* 4 */ 1.117 + domid_t domain; 1.118 + u16 exec_domain; 1.119 /* IN/OUT parameters */ 1.120 - full_execution_context_t *ctxt; /* 8 */ 1.121 - MEMORY_PADDING; 1.122 -} PACKED dom0_setdomaininfo_t; /* 16 bytes */ 1.123 + full_execution_context_t *ctxt; 1.124 +} dom0_setdomaininfo_t; 1.125 1.126 #define DOM0_MSR 15 1.127 typedef struct { 1.128 /* IN variables. */ 1.129 - u32 write; /* 0 */ 1.130 - u32 cpu_mask; /* 4 */ 1.131 - u32 msr; /* 8 */ 1.132 - u32 in1; /* 12 */ 1.133 - u32 in2; /* 16 */ 1.134 + u32 write; 1.135 + u32 cpu_mask; 1.136 + u32 msr; 1.137 + u32 in1; 1.138 + u32 in2; 1.139 /* OUT variables. */ 1.140 - u32 out1; /* 20 */ 1.141 - u32 out2; /* 24 */ 1.142 -} PACKED dom0_msr_t; /* 28 bytes */ 1.143 + u32 out1; 1.144 + u32 out2; 1.145 +} dom0_msr_t; 1.146 1.147 #define DOM0_DEBUG 16 1.148 typedef struct { 1.149 /* IN variables. */ 1.150 - domid_t domain; /* 0 */ 1.151 - u8 opcode; /* 2 */ 1.152 - u8 __pad; 1.153 - u32 in1; /* 4 */ 1.154 - u32 in2; /* 8 */ 1.155 - u32 in3; /* 12 */ 1.156 - u32 in4; /* 16 */ 1.157 + domid_t domain; 1.158 + u8 opcode; 1.159 + u32 in1; 1.160 + u32 in2; 1.161 + u32 in3; 1.162 + u32 in4; 1.163 /* OUT variables. */ 1.164 - u32 status; /* 20 */ 1.165 - u32 out1; /* 24 */ 1.166 - u32 out2; /* 28 */ 1.167 -} PACKED dom0_debug_t; /* 32 bytes */ 1.168 + u32 status; 1.169 + u32 out1; 1.170 + u32 out2; 1.171 +} dom0_debug_t; 1.172 1.173 /* 1.174 * Set clock such that it would read <secs,usecs> after 00:00:00 UTC, 1.175 @@ -156,10 +138,10 @@ typedef struct { 1.176 #define DOM0_SETTIME 17 1.177 typedef struct { 1.178 /* IN variables. */ 1.179 - u32 secs; /* 0 */ 1.180 - u32 usecs; /* 4 */ 1.181 - u64 system_time; /* 8 */ 1.182 -} PACKED dom0_settime_t; /* 16 bytes */ 1.183 + u32 secs; 1.184 + u32 usecs; 1.185 + u64 system_time; 1.186 +} dom0_settime_t; 1.187 1.188 #define DOM0_GETPAGEFRAMEINFO 18 1.189 #define NOTAB 0 /* normal page */ 1.190 @@ -174,25 +156,22 @@ typedef struct { 1.191 1.192 typedef struct { 1.193 /* IN variables. */ 1.194 - memory_t pfn; /* 0: Machine page frame number to query. */ 1.195 - MEMORY_PADDING; 1.196 - domid_t domain; /* 8: To which domain does the frame belong? */ 1.197 - u16 __pad; 1.198 + memory_t pfn; /* Machine page frame number to query. */ 1.199 + domid_t domain; /* To which domain does the frame belong? */ 1.200 /* OUT variables. */ 1.201 /* Is the page PINNED to a type? */ 1.202 - u32 type; /* 12: see above type defs */ 1.203 -} PACKED dom0_getpageframeinfo_t; /* 16 bytes */ 1.204 + u32 type; /* see above type defs */ 1.205 +} dom0_getpageframeinfo_t; 1.206 1.207 /* 1.208 * Read console content from Xen buffer ring. 1.209 */ 1.210 #define DOM0_READCONSOLE 19 1.211 typedef struct { 1.212 - memory_t str; /* 0 */ 1.213 - MEMORY_PADDING; 1.214 - u32 count; /* 8 */ 1.215 - u32 cmd; /* 12 */ 1.216 -} PACKED dom0_readconsole_t; /* 16 bytes */ 1.217 + memory_t str; 1.218 + u32 count; 1.219 + u32 cmd; 1.220 +} dom0_readconsole_t; 1.221 1.222 /* 1.223 * Pin Domain to a particular CPU (use -1 to unpin) 1.224 @@ -200,34 +179,30 @@ typedef struct { 1.225 #define DOM0_PINCPUDOMAIN 20 1.226 typedef struct { 1.227 /* IN variables. */ 1.228 - domid_t domain; /* 0 */ 1.229 + domid_t domain; 1.230 u16 exec_domain; 1.231 - s32 cpu; /* 4: -1 implies unpin */ 1.232 -} PACKED dom0_pincpudomain_t; /* 8 bytes */ 1.233 + s32 cpu; /* -1 implies unpin */ 1.234 +} dom0_pincpudomain_t; 1.235 1.236 /* Get trace buffers machine base address */ 1.237 #define DOM0_GETTBUFS 21 1.238 typedef struct { 1.239 /* OUT variables */ 1.240 - memory_t mach_addr; /* 0: location of the trace buffers */ 1.241 - MEMORY_PADDING; 1.242 - u32 size; /* 8: size of each trace buffer, in bytes */ 1.243 -} PACKED dom0_gettbufs_t; /* 12 bytes */ 1.244 + memory_t mach_addr; 1.245 + u32 size; 1.246 +} dom0_gettbufs_t; 1.247 1.248 /* 1.249 * Get physical information about the host machine 1.250 */ 1.251 #define DOM0_PHYSINFO 22 1.252 typedef struct { 1.253 - u32 ht_per_core; /* 0 */ 1.254 - u32 cores; /* 4 */ 1.255 - u32 cpu_khz; /* 8 */ 1.256 - u32 __pad; /* 12 */ 1.257 - memory_t total_pages; /* 16 */ 1.258 - MEMORY_PADDING; 1.259 - memory_t free_pages; /* 24 */ 1.260 - MEMORY_PADDING; 1.261 -} PACKED dom0_physinfo_t; /* 32 bytes */ 1.262 + u32 ht_per_core; 1.263 + u32 cores; 1.264 + u32 cpu_khz; 1.265 + memory_t total_pages; 1.266 + memory_t free_pages; 1.267 +} dom0_physinfo_t; 1.268 1.269 /* 1.270 * Allow a domain access to a physical PCI device 1.271 @@ -235,13 +210,12 @@ typedef struct { 1.272 #define DOM0_PCIDEV_ACCESS 23 1.273 typedef struct { 1.274 /* IN variables. */ 1.275 - domid_t domain; /* 0 */ 1.276 - u16 __pad; 1.277 - u32 bus; /* 4 */ 1.278 - u32 dev; /* 8 */ 1.279 - u32 func; /* 12 */ 1.280 - u32 enable; /* 16 */ 1.281 -} PACKED dom0_pcidev_access_t; /* 20 bytes */ 1.282 + domid_t domain; 1.283 + u32 bus; 1.284 + u32 dev; 1.285 + u32 func; 1.286 + u32 enable; 1.287 +} dom0_pcidev_access_t; 1.288 1.289 /* 1.290 * Get the ID of the current scheduler. 1.291 @@ -249,8 +223,8 @@ typedef struct { 1.292 #define DOM0_SCHED_ID 24 1.293 typedef struct { 1.294 /* OUT variable */ 1.295 - u32 sched_id; /* 0 */ 1.296 -} PACKED dom0_sched_id_t; /* 4 bytes */ 1.297 + u32 sched_id; 1.298 +} dom0_sched_id_t; 1.299 1.300 /* 1.301 * Control shadow pagetables operation 1.302 @@ -275,50 +249,37 @@ typedef struct dom0_shadow_control 1.303 1.304 typedef struct { 1.305 /* IN variables. */ 1.306 - domid_t domain; /* 0 */ 1.307 - u16 __pad; 1.308 - u32 op; /* 4 */ 1.309 - unsigned long *dirty_bitmap; /* 8: pointer to locked buffer */ 1.310 - MEMORY_PADDING; 1.311 + domid_t domain; 1.312 + u32 op; 1.313 + unsigned long *dirty_bitmap; /* pointer to locked buffer */ 1.314 /* IN/OUT variables. */ 1.315 - memory_t pages; /* 16: size of buffer, updated with actual size */ 1.316 - MEMORY_PADDING; 1.317 + memory_t pages; /* size of buffer, updated with actual size */ 1.318 /* OUT variables. */ 1.319 dom0_shadow_control_stats_t stats; 1.320 -} PACKED dom0_shadow_control_t; 1.321 +} dom0_shadow_control_t; 1.322 1.323 #define DOM0_SETDOMAININITIALMEM 27 1.324 typedef struct { 1.325 /* IN variables. */ 1.326 - domid_t domain; /* 0 */ 1.327 - u16 __pad0; 1.328 - u32 __pad1; 1.329 - memory_t initial_memkb; /* 8 */ 1.330 - MEMORY_PADDING; 1.331 -} PACKED dom0_setdomaininitialmem_t; /* 16 bytes */ 1.332 + domid_t domain; 1.333 + memory_t initial_memkb; 1.334 +} dom0_setdomaininitialmem_t; 1.335 1.336 #define DOM0_SETDOMAINMAXMEM 28 1.337 typedef struct { 1.338 /* IN variables. */ 1.339 - domid_t domain; /* 0 */ 1.340 - u16 __pad0; 1.341 - u32 __pad1; 1.342 - memory_t max_memkb; /* 8 */ 1.343 - MEMORY_PADDING; 1.344 -} PACKED dom0_setdomainmaxmem_t; /* 16 bytes */ 1.345 + domid_t domain; 1.346 + memory_t max_memkb; 1.347 +} dom0_setdomainmaxmem_t; 1.348 1.349 #define DOM0_GETPAGEFRAMEINFO2 29 /* batched interface */ 1.350 typedef struct { 1.351 /* IN variables. */ 1.352 - domid_t domain; /* 0 */ 1.353 - u16 __pad0; 1.354 - u32 __pad1; 1.355 - memory_t num; /* 8 */ 1.356 - MEMORY_PADDING; 1.357 + domid_t domain; 1.358 + memory_t num; 1.359 /* IN/OUT variables. */ 1.360 - unsigned long *array; /* 16 */ 1.361 - MEMORY_PADDING; 1.362 -} PACKED dom0_getpageframeinfo2_t; /* 24 bytes */ 1.363 + unsigned long *array; 1.364 +} dom0_getpageframeinfo2_t; 1.365 1.366 /* 1.367 * Request memory range (@pfn, @pfn+@nr_pfns-1) to have type @type. 1.368 @@ -330,16 +291,13 @@ typedef struct { 1.369 #define DOM0_ADD_MEMTYPE 31 1.370 typedef struct { 1.371 /* IN variables. */ 1.372 - memory_t pfn; /* 0 */ 1.373 - MEMORY_PADDING; 1.374 - memory_t nr_pfns; /* 8 */ 1.375 - MEMORY_PADDING; 1.376 - u32 type; /* 16 */ 1.377 - u32 __pad0; 1.378 + memory_t pfn; 1.379 + memory_t nr_pfns; 1.380 + u32 type; 1.381 /* OUT variables. */ 1.382 - u32 handle; /* 24 */ 1.383 - u32 reg; /* 28 */ 1.384 -} PACKED dom0_add_memtype_t; /* 32 bytes */ 1.385 + u32 handle; 1.386 + u32 reg; 1.387 +} dom0_add_memtype_t; 1.388 1.389 /* 1.390 * Tear down an existing memory-range type. If @handle is remembered then it 1.391 @@ -351,24 +309,20 @@ typedef struct { 1.392 #define DOM0_DEL_MEMTYPE 32 1.393 typedef struct { 1.394 /* IN variables. */ 1.395 - u32 handle; /* 0 */ 1.396 - u32 reg; /* 4 */ 1.397 -} PACKED dom0_del_memtype_t; /* 8 bytes */ 1.398 + u32 handle; 1.399 + u32 reg; 1.400 +} dom0_del_memtype_t; 1.401 1.402 /* Read current type of an MTRR (x86-specific). */ 1.403 #define DOM0_READ_MEMTYPE 33 1.404 typedef struct { 1.405 /* IN variables. */ 1.406 - u32 reg; /* 0 */ 1.407 - u32 __pad0; 1.408 + u32 reg; 1.409 /* OUT variables. */ 1.410 - memory_t pfn; /* 8 */ 1.411 - MEMORY_PADDING; 1.412 - memory_t nr_pfns; /* 16 */ 1.413 - MEMORY_PADDING; 1.414 - u32 type; /* 24 */ 1.415 - u32 __pad1; 1.416 -} PACKED dom0_read_memtype_t; /* 32 bytes */ 1.417 + memory_t pfn; 1.418 + memory_t nr_pfns; 1.419 + u32 type; 1.420 +} dom0_read_memtype_t; 1.421 1.422 /* Interface for controlling Xen software performance counters. */ 1.423 #define DOM0_PERFCCONTROL 34 1.424 @@ -376,41 +330,37 @@ typedef struct { 1.425 #define DOM0_PERFCCONTROL_OP_RESET 1 /* Reset all counters to zero. */ 1.426 #define DOM0_PERFCCONTROL_OP_QUERY 2 /* Get perfctr information. */ 1.427 typedef struct { 1.428 - u8 name[80]; /* 0: name of perf counter */ 1.429 - u32 nr_vals; /* 80: number of values for this counter */ 1.430 - u32 vals[64]; /* 84: array of values */ 1.431 -} PACKED dom0_perfc_desc_t; /* 340 bytes */ 1.432 + u8 name[80]; /* name of perf counter */ 1.433 + u32 nr_vals; /* number of values for this counter */ 1.434 + u32 vals[64]; /* array of values */ 1.435 +} dom0_perfc_desc_t; 1.436 typedef struct { 1.437 /* IN variables. */ 1.438 - u32 op; /* 0: DOM0_PERFCCONTROL_OP_??? */ 1.439 + u32 op; /* DOM0_PERFCCONTROL_OP_??? */ 1.440 /* OUT variables. */ 1.441 - u32 nr_counters; /* 4: number of counters */ 1.442 - dom0_perfc_desc_t *desc; /* 8: counter information (or NULL) */ 1.443 - MEMORY_PADDING; 1.444 -} PACKED dom0_perfccontrol_t; /* 16 bytes */ 1.445 + u32 nr_counters; /* number of counters */ 1.446 + dom0_perfc_desc_t *desc; /* counter information (or NULL) */ 1.447 +} dom0_perfccontrol_t; 1.448 1.449 #define DOM0_MICROCODE 35 1.450 typedef struct { 1.451 /* IN variables. */ 1.452 - void *data; /* 0: Pointer to microcode data */ 1.453 - MEMORY_PADDING; 1.454 - u32 length; /* 8: Length of microcode data. */ 1.455 - u32 _pad0; 1.456 -} PACKED dom0_microcode_t; /* 16 bytes */ 1.457 + void *data; /* Pointer to microcode data */ 1.458 + u32 length; /* Length of microcode data. */ 1.459 +} dom0_microcode_t; 1.460 1.461 #define DOM0_IOPORT_PERMISSION 36 1.462 typedef struct { 1.463 - domid_t domain; /* 0: domain to be affected */ 1.464 - u16 first_port; /* 2: first port int range */ 1.465 - u16 nr_ports; /* 4: size of port range */ 1.466 - u16 allow_access; /* 6: allow or deny access to range? */ 1.467 -} PACKED dom0_ioport_permission_t; /* 8 bytes */ 1.468 + domid_t domain; /* domain to be affected */ 1.469 + u16 first_port; /* first port int range */ 1.470 + u16 nr_ports; /* size of port range */ 1.471 + u16 allow_access; /* allow or deny access to range? */ 1.472 +} dom0_ioport_permission_t; 1.473 1.474 typedef struct { 1.475 - u32 cmd; /* 0 */ 1.476 - u32 interface_version; /* 4 */ /* DOM0_INTERFACE_VERSION */ 1.477 - union { /* 8 */ 1.478 - u32 dummy[18]; /* 72 bytes */ 1.479 + u32 cmd; 1.480 + u32 interface_version; /* DOM0_INTERFACE_VERSION */ 1.481 + union { 1.482 dom0_createdomain_t createdomain; 1.483 dom0_pausedomain_t pausedomain; 1.484 dom0_unpausedomain_t unpausedomain; 1.485 @@ -440,7 +390,7 @@ typedef struct { 1.486 dom0_perfccontrol_t perfccontrol; 1.487 dom0_microcode_t microcode; 1.488 dom0_ioport_permission_t ioport_permission; 1.489 - } PACKED u; 1.490 -} PACKED dom0_op_t; /* 80 bytes */ 1.491 + } u; 1.492 +} dom0_op_t; 1.493 1.494 #endif /* __XEN_PUBLIC_DOM0_OPS_H__ */