aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2005-07-02 08:41:48 +0000
committerkaf24@firebug.cl.cam.ac.uk <kaf24@firebug.cl.cam.ac.uk>2005-07-02 08:41:48 +0000
commite27fcf3739cabf286de6ecbc98b10c98b95e07bb (patch)
tree3df0bb57d40e3518f8626000ee0e52dbc43122f1
parent14f7caf77578c022f58c2ecd741920ee69889675 (diff)
downloadxen-e27fcf3739cabf286de6ecbc98b10c98b95e07bb.tar.gz
xen-e27fcf3739cabf286de6ecbc98b10c98b95e07bb.tar.bz2
xen-e27fcf3739cabf286de6ecbc98b10c98b95e07bb.zip
Remove non-ISO attributes from public headers.
Signed-off-by: Keir Fraser <keir@xensource.com>
-rw-r--r--linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/entry.S2
-rw-r--r--tools/debugger/pdb/linux-2.6-module/pdb_module.h4
-rw-r--r--tools/xcs/xcs_proto.h2
-rw-r--r--xen/include/asm-x86/domain.h4
-rw-r--r--xen/include/asm-x86/mm.h9
-rw-r--r--xen/include/public/arch-ia64.h22
-rw-r--r--xen/include/public/arch-x86_32.h36
-rw-r--r--xen/include/public/arch-x86_64.h33
-rw-r--r--xen/include/public/dom0_ops.h2
-rw-r--r--xen/include/public/event_channel.h102
-rw-r--r--xen/include/public/grant_table.h77
-rw-r--r--xen/include/public/io/blkif.h29
-rw-r--r--xen/include/public/io/domain_controller.h410
-rw-r--r--xen/include/public/io/netif.h63
-rw-r--r--xen/include/public/physdev.h49
-rw-r--r--xen/include/public/policy_ops.h30
-rw-r--r--xen/include/public/sched_ctl.h44
-rw-r--r--xen/include/public/vmx_assist.h2
-rw-r--r--xen/include/public/xen.h78
19 files changed, 441 insertions, 557 deletions
diff --git a/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/entry.S b/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/entry.S
index efc178ae47..8f20ff647b 100644
--- a/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/entry.S
+++ b/linux-2.6.11-xen-sparse/arch/xen/x86_64/kernel/entry.S
@@ -127,7 +127,7 @@
* Must be consistent with the definition in arch_x86_64.h:
* struct switch_to_user {
* u64 rax, r11, rcx, flags, rip, cs, rflags, rsp, ss;
- * } PACKED;
+ * };
* #define VGCF_IN_SYSCALL (1<<8)
*/
.macro SWITCH_TO_USER flag
diff --git a/tools/debugger/pdb/linux-2.6-module/pdb_module.h b/tools/debugger/pdb/linux-2.6-module/pdb_module.h
index 4487e3e196..a9f566bade 100644
--- a/tools/debugger/pdb/linux-2.6-module/pdb_module.h
+++ b/tools/debugger/pdb/linux-2.6-module/pdb_module.h
@@ -28,7 +28,7 @@ typedef struct
pdb_op_rd_reg_t rd_reg;
pdb_op_wr_reg_t wr_reg;
} u;
-} PACKED pdb_request_t, *pdb_request_p;
+} pdb_request_t, *pdb_request_p;
#define PDB_RESPONSE_OKAY 0
@@ -38,7 +38,7 @@ typedef struct {
u8 operation; /* copied from request */
s16 status; /* PDB_RESPONSE_??? */
u32 value;
-} PACKED pdb_response_t, *pdb_response_p;
+} pdb_response_t, *pdb_response_p;
DEFINE_RING_TYPES(pdb, pdb_request_t, pdb_response_t);
diff --git a/tools/xcs/xcs_proto.h b/tools/xcs/xcs_proto.h
index 7038467c90..25631db87f 100644
--- a/tools/xcs/xcs_proto.h
+++ b/tools/xcs/xcs_proto.h
@@ -75,7 +75,7 @@ typedef struct {
xcs_interface_msg_t interface;
xcs_control_msg_t control; /* These are xcs data message types */
- } PACKED u;
+ } u;
} xcs_msg_t;
/* message validation macros. */
diff --git a/xen/include/asm-x86/domain.h b/xen/include/asm-x86/domain.h
index d637e78a5d..055e318661 100644
--- a/xen/include/asm-x86/domain.h
+++ b/xen/include/asm-x86/domain.h
@@ -68,7 +68,9 @@ struct arch_domain
struct arch_vcpu
{
- struct vcpu_guest_context guest_context;
+ /* Needs 16-byte aligment for FXSAVE/FXRSTOR. */
+ struct vcpu_guest_context guest_context
+ __attribute__((__aligned__(16)));
unsigned long flags; /* TF_ */
diff --git a/xen/include/asm-x86/mm.h b/xen/include/asm-x86/mm.h
index 47793cb2d3..9d7b0f413e 100644
--- a/xen/include/asm-x86/mm.h
+++ b/xen/include/asm-x86/mm.h
@@ -37,7 +37,7 @@ struct pfn_info
u32 _domain; /* pickled format */
/* Type reference count and various PGT_xxx flags and fields. */
u32 type_info;
- } PACKED inuse;
+ } inuse;
/* Page is on a free list: ((count_info & PGC_count_mask) == 0). */
struct {
@@ -45,11 +45,10 @@ struct pfn_info
cpumask_t cpumask;
/* Order-size of the free chunk this page is the head of. */
u8 order;
- } PACKED free;
+ } free;
- } PACKED u;
-
-} PACKED;
+ } u;
+};
/* The following page types are MUTUALLY EXCLUSIVE. */
#define PGT_none (0<<29) /* no special uses of this page */
diff --git a/xen/include/public/arch-ia64.h b/xen/include/public/arch-ia64.h
index e6cb8959e3..e9b6767c76 100644
--- a/xen/include/public/arch-ia64.h
+++ b/xen/include/public/arch-ia64.h
@@ -7,13 +7,6 @@
#ifndef __HYPERVISOR_IF_IA64_H__
#define __HYPERVISOR_IF_IA64_H__
-// "packed" generates awful code
-#define PACKED
-
-/* Pointers are naturally 64 bits in this architecture; no padding needed. */
-#define _MEMORY_PADDING(_X)
-#define MEMORY_PADDING
-
/* Maximum number of virtual CPUs in multi-processor guests. */
/* WARNING: before changing this, check that shared_info fits on a page */
#define MAX_VIRT_CPUS 1
@@ -48,11 +41,6 @@ typedef struct {
#define INVALID_MFN (~0UL)
-
-typedef struct
-{
-} PACKED cpu_user_regs;
-
/*
* NB. This may become a 64-bit count with no shift. If this happens then the
* structure size will still be 8 bytes, so no other alignments will change.
@@ -60,7 +48,7 @@ typedef struct
typedef struct {
unsigned int tsc_bits; /* 0: 32 bits read from the CPU's TSC. */
unsigned int tsc_bitshift; /* 4: 'tsc_bits' uses N:N+31 of TSC. */
-} PACKED tsc_timestamp_t; /* 8 bytes */
+} tsc_timestamp_t; /* 8 bytes */
struct pt_fpreg {
union {
@@ -183,20 +171,20 @@ typedef struct {
unsigned long pkrs[8]; // protection key registers
unsigned long tmp[8]; // temp registers (e.g. for hyperprivops)
int evtchn_vector;
-//} PACKED arch_vcpu_info_t;
-} arch_vcpu_info_t; // DON'T PACK
+} arch_vcpu_info_t;
+#define __ARCH_HAS_VCPU_INFO
typedef struct {
int domain_controller_evtchn;
unsigned int flags;
-//} PACKED arch_shared_info_t;
+//} arch_shared_info_t;
} arch_shared_info_t; // DON'T PACK
typedef struct vcpu_guest_context {
struct pt_regs regs;
arch_vcpu_info_t vcpu;
arch_shared_info_t shared;
-} PACKED vcpu_guest_context_t;
+} vcpu_guest_context_t;
#endif /* !__ASSEMBLY__ */
diff --git a/xen/include/public/arch-x86_32.h b/xen/include/public/arch-x86_32.h
index eab800a7a5..4e3e7455f8 100644
--- a/xen/include/public/arch-x86_32.h
+++ b/xen/include/public/arch-x86_32.h
@@ -9,21 +9,6 @@
#ifndef __XEN_PUBLIC_ARCH_X86_32_H__
#define __XEN_PUBLIC_ARCH_X86_32_H__
-#ifndef PACKED
-/* GCC-specific way to pack structure definitions (no implicit padding). */
-#define PACKED __attribute__ ((packed))
-#endif
-
-/*
- * Pointers and other address fields inside interface structures are padded to
- * 64 bits. This means that field alignments aren't different between 32- and
- * 64-bit architectures.
- */
-/* NB. Multi-level macro ensures __LINE__ is expanded before concatenation. */
-#define __MEMORY_PADDING(_X) u32 __pad_ ## _X
-#define _MEMORY_PADDING(_X) __MEMORY_PADDING(_X)
-#define MEMORY_PADDING _MEMORY_PADDING(__LINE__)
-
/*
* SEGMENT DESCRIPTOR TABLES
*/
@@ -88,12 +73,12 @@ typedef unsigned long memory_t; /* Full-sized pointer/address/memory-size. */
#define TI_GET_IF(_ti) ((_ti)->flags & 4)
#define TI_SET_DPL(_ti,_dpl) ((_ti)->flags |= (_dpl))
#define TI_SET_IF(_ti,_if) ((_ti)->flags |= ((!!(_if))<<2))
-typedef struct {
- u8 vector; /* 0: exception vector */
- u8 flags; /* 1: 0-3: privilege level; 4: clear event enable? */
- u16 cs; /* 2: code selector */
- memory_t address; /* 4: code address */
-} PACKED trap_info_t; /* 8 bytes */
+typedef struct trap_info {
+ u8 vector; /* exception vector */
+ u8 flags; /* 0-3: privilege level; 4: clear event enable? */
+ u16 cs; /* code selector */
+ memory_t address; /* code address */
+} trap_info_t;
typedef struct cpu_user_regs {
u32 ebx;
@@ -125,13 +110,13 @@ typedef u64 tsc_timestamp_t; /* RDTSC timestamp */
* in by FXSAVE if the CPU has feature FXSR; otherwise FSAVE is used.
*/
typedef struct vcpu_guest_context {
+ /* FPU registers come first so they can be aligned for FXSAVE/FXRSTOR. */
+ struct { char x[512]; } fpu_ctxt; /* User-level FPU registers */
#define VGCF_I387_VALID (1<<0)
#define VGCF_VMX_GUEST (1<<1)
#define VGCF_IN_KERNEL (1<<2)
unsigned long flags; /* VGCF_* flags */
cpu_user_regs_t user_regs; /* User-level CPU registers */
- struct { char x[512]; } fpu_ctxt /* User-level FPU registers */
- __attribute__((__aligned__(16))); /* (needs 16-byte alignment) */
trap_info_t trap_ctxt[256]; /* Virtual IDT */
unsigned long ldt_base, ldt_ents; /* LDT (linear address, # ents) */
unsigned long gdt_frames[16], gdt_ents; /* GDT (machine frames, # ents) */
@@ -145,14 +130,11 @@ typedef struct vcpu_guest_context {
unsigned long vm_assist; /* VMASST_TYPE_* bitmap */
} vcpu_guest_context_t;
-typedef struct {
+typedef struct arch_shared_info {
/* MFN of a table of MFNs that make up p2m table */
u64 pfn_to_mfn_frame_list;
} arch_shared_info_t;
-typedef struct {
-} arch_vcpu_info_t;
-
#endif
#endif
diff --git a/xen/include/public/arch-x86_64.h b/xen/include/public/arch-x86_64.h
index 257e70319c..02648a4830 100644
--- a/xen/include/public/arch-x86_64.h
+++ b/xen/include/public/arch-x86_64.h
@@ -9,15 +9,6 @@
#ifndef __XEN_PUBLIC_ARCH_X86_64_H__
#define __XEN_PUBLIC_ARCH_X86_64_H__
-#ifndef PACKED
-/* GCC-specific way to pack structure definitions (no implicit padding). */
-#define PACKED __attribute__ ((packed))
-#endif
-
-/* Pointers are naturally 64 bits in this architecture; no padding needed. */
-#define _MEMORY_PADDING(_X)
-#define MEMORY_PADDING
-
/*
* SEGMENT DESCRIPTOR TABLES
*/
@@ -110,7 +101,7 @@ struct switch_to_user {
/* Top of stack (%rsp at point of hypercall). */
u64 rax, r11, rcx, flags, rip, cs, rflags, rsp, ss;
/* Bottom of switch_to_user stack frame. */
-} PACKED;
+};
/* NB. Both the following are 64 bits each. */
typedef unsigned long memory_t; /* Full-sized pointer/address/memory-size. */
@@ -129,13 +120,12 @@ typedef unsigned long memory_t; /* Full-sized pointer/address/memory-size. */
#define TI_GET_IF(_ti) ((_ti)->flags & 4)
#define TI_SET_DPL(_ti,_dpl) ((_ti)->flags |= (_dpl))
#define TI_SET_IF(_ti,_if) ((_ti)->flags |= ((!!(_if))<<2))
-typedef struct {
- u8 vector; /* 0: exception vector */
- u8 flags; /* 1: 0-3: privilege level; 4: clear event enable? */
- u16 cs; /* 2: code selector */
- u32 __pad; /* 4 */
- memory_t address; /* 8: code address */
-} PACKED trap_info_t; /* 16 bytes */
+typedef struct trap_info {
+ u8 vector; /* exception vector */
+ u8 flags; /* 0-3: privilege level; 4: clear event enable? */
+ u16 cs; /* code selector */
+ memory_t address; /* code address */
+} trap_info_t;
typedef struct cpu_user_regs {
u64 r15;
@@ -175,13 +165,13 @@ typedef u64 tsc_timestamp_t; /* RDTSC timestamp */
* in by FXSAVE if the CPU has feature FXSR; otherwise FSAVE is used.
*/
typedef struct vcpu_guest_context {
+ /* FPU registers come first so they can be aligned for FXSAVE/FXRSTOR. */
+ struct { char x[512]; } fpu_ctxt; /* User-level FPU registers */
#define VGCF_I387_VALID (1<<0)
#define VGCF_VMX_GUEST (1<<1)
#define VGCF_IN_KERNEL (1<<2)
unsigned long flags; /* VGCF_* flags */
cpu_user_regs_t user_regs; /* User-level CPU registers */
- struct { char x[512]; } fpu_ctxt /* User-level FPU registers */
- __attribute__((__aligned__(16))); /* (needs 16-byte alignment) */
trap_info_t trap_ctxt[256]; /* Virtual IDT */
unsigned long ldt_base, ldt_ents; /* LDT (linear address, # ents) */
unsigned long gdt_frames[16], gdt_ents; /* GDT (machine frames, # ents) */
@@ -198,14 +188,11 @@ typedef struct vcpu_guest_context {
u64 gs_base_user;
} vcpu_guest_context_t;
-typedef struct {
+typedef struct arch_shared_info {
/* MFN of a table of MFNs that make up p2m table */
u64 pfn_to_mfn_frame_list;
} arch_shared_info_t;
-typedef struct {
-} arch_vcpu_info_t;
-
#endif /* !__ASSEMBLY__ */
#endif
diff --git a/xen/include/public/dom0_ops.h b/xen/include/public/dom0_ops.h
index 601368eb02..255e098e1a 100644
--- a/xen/include/public/dom0_ops.h
+++ b/xen/include/public/dom0_ops.h
@@ -19,7 +19,7 @@
* This makes sure that old versions of dom0 tools will stop working in a
* well-defined way (rather than crashing the machine, for instance).
*/
-#define DOM0_INTERFACE_VERSION 0xAAAA1008
+#define DOM0_INTERFACE_VERSION 0xAAAA1009
/************************************************************************/
diff --git a/xen/include/public/event_channel.h b/xen/include/public/event_channel.h
index e787a0524a..3110657b77 100644
--- a/xen/include/public/event_channel.h
+++ b/xen/include/public/event_channel.h
@@ -15,13 +15,12 @@
* will be allocated, and the field filled in on return.
*/
#define EVTCHNOP_alloc_unbound 6
-typedef struct {
+typedef struct evtchn_alloc_unbound {
/* IN parameters */
- domid_t dom; /* 0 */
- u16 __pad;
+ domid_t dom;
/* IN/OUT parameters */
- u32 port; /* 4 */
-} PACKED evtchn_alloc_unbound_t; /* 8 bytes */
+ u32 port;
+} evtchn_alloc_unbound_t;
/*
* EVTCHNOP_bind_interdomain: Construct an interdomain event channel between
@@ -44,12 +43,12 @@ typedef struct {
* be closed or unbound.
*/
#define EVTCHNOP_bind_interdomain 0
-typedef struct {
+typedef struct evtchn_bind_interdomain {
/* IN parameters. */
- domid_t dom1, dom2; /* 0, 2 */
+ domid_t dom1, dom2;
/* IN/OUT parameters. */
- u32 port1, port2; /* 4, 8 */
-} PACKED evtchn_bind_interdomain_t; /* 12 bytes */
+ u32 port1, port2;
+} evtchn_bind_interdomain_t;
/*
* EVTCHNOP_bind_virq: Bind a local event channel to IRQ <irq> on calling vcpu.
@@ -59,12 +58,12 @@ typedef struct {
* may not be changed.
*/
#define EVTCHNOP_bind_virq 1
-typedef struct {
+typedef struct evtchn_bind_virq {
/* IN parameters. */
- u32 virq; /* 0 */
+ u32 virq;
/* OUT parameters. */
- u32 port; /* 4 */
-} PACKED evtchn_bind_virq_t; /* 8 bytes */
+ u32 port;
+} evtchn_bind_virq_t;
/*
* EVTCHNOP_bind_pirq: Bind a local event channel to IRQ <irq>.
@@ -73,14 +72,14 @@ typedef struct {
* 2. Only a sufficiently-privileged domain may bind to a physical IRQ.
*/
#define EVTCHNOP_bind_pirq 2
-typedef struct {
+typedef struct evtchn_bind_pirq {
/* IN parameters. */
- u32 pirq; /* 0 */
+ u32 pirq;
#define BIND_PIRQ__WILL_SHARE 1
- u32 flags; /* BIND_PIRQ__* */ /* 4 */
+ u32 flags; /* BIND_PIRQ__* */
/* OUT parameters. */
- u32 port; /* 8 */
-} PACKED evtchn_bind_pirq_t; /* 12 bytes */
+ u32 port;
+} evtchn_bind_pirq_t;
/*
* EVTCHNOP_bind_ipi: Bind a local event channel to receive events.
@@ -89,12 +88,12 @@ typedef struct {
* may not be changed.
*/
#define EVTCHNOP_bind_ipi 7
-typedef struct {
+typedef struct evtchn_bind_ipi {
/* IN parameters. */
- u32 ipi_vcpu; /* 0 */
+ u32 ipi_vcpu;
/* OUT parameters. */
- u32 port; /* 4 */
-} PACKED evtchn_bind_ipi_t; /* 8 bytes */
+ u32 port;
+} evtchn_bind_ipi_t;
/*
* EVTCHNOP_close: Close the communication channel which has an endpoint at
@@ -106,24 +105,23 @@ typedef struct {
* for which <dom> is not DOMID_SELF.
*/
#define EVTCHNOP_close 3
-typedef struct {
+typedef struct evtchn_close {
/* IN parameters. */
- domid_t dom; /* 0 */
- u16 __pad;
- u32 port; /* 4 */
+ domid_t dom;
+ u32 port;
/* No OUT parameters. */
-} PACKED evtchn_close_t; /* 8 bytes */
+} evtchn_close_t;
/*
* EVTCHNOP_send: Send an event to the remote end of the channel whose local
* endpoint is <DOMID_SELF, local_port>.
*/
#define EVTCHNOP_send 4
-typedef struct {
+typedef struct evtchn_send {
/* IN parameters. */
- u32 local_port; /* 0 */
+ u32 local_port;
/* No OUT parameters. */
-} PACKED evtchn_send_t; /* 4 bytes */
+} evtchn_send_t;
/*
* EVTCHNOP_status: Get the current status of the communication channel which
@@ -134,11 +132,10 @@ typedef struct {
* channel for which <dom> is not DOMID_SELF.
*/
#define EVTCHNOP_status 5
-typedef struct {
+typedef struct evtchn_status {
/* IN parameters */
- domid_t dom; /* 0 */
- u16 __pad;
- u32 port; /* 4 */
+ domid_t dom;
+ u32 port;
/* OUT parameters */
#define EVTCHNSTAT_closed 0 /* Channel is not in use. */
#define EVTCHNSTAT_unbound 1 /* Channel is waiting interdom connection.*/
@@ -146,26 +143,24 @@ typedef struct {
#define EVTCHNSTAT_pirq 3 /* Channel is bound to a phys IRQ line. */
#define EVTCHNSTAT_virq 4 /* Channel is bound to a virtual IRQ line */
#define EVTCHNSTAT_ipi 5 /* Channel is bound to a virtual IPI line */
- u32 status; /* 8 */
- union { /* 12 */
+ u32 status;
+ union {
struct {
- domid_t dom; /* 12 */
- } PACKED unbound; /* EVTCHNSTAT_unbound */
+ domid_t dom;
+ } unbound; /* EVTCHNSTAT_unbound */
struct {
- domid_t dom; /* 12 */
- u16 __pad;
- u32 port; /* 16 */
- } PACKED interdomain; /* EVTCHNSTAT_interdomain */
- u32 pirq; /* EVTCHNSTAT_pirq */ /* 12 */
- u32 virq; /* EVTCHNSTAT_virq */ /* 12 */
- u32 ipi_vcpu; /* EVTCHNSTAT_ipi */ /* 12 */
- } PACKED u;
-} PACKED evtchn_status_t; /* 20 bytes */
+ domid_t dom;
+ u32 port;
+ } interdomain; /* EVTCHNSTAT_interdomain */
+ u32 pirq; /* EVTCHNSTAT_pirq */
+ u32 virq; /* EVTCHNSTAT_virq */
+ u32 ipi_vcpu; /* EVTCHNSTAT_ipi */
+ } u;
+} evtchn_status_t;
-typedef struct {
- u32 cmd; /* EVTCHNOP_* */ /* 0 */
- u32 __reserved; /* 4 */
- union { /* 8 */
+typedef struct evtchn_op {
+ u32 cmd; /* EVTCHNOP_* */
+ union {
evtchn_alloc_unbound_t alloc_unbound;
evtchn_bind_interdomain_t bind_interdomain;
evtchn_bind_virq_t bind_virq;
@@ -174,8 +169,7 @@ typedef struct {
evtchn_close_t close;
evtchn_send_t send;
evtchn_status_t status;
- u8 __dummy[24];
- } PACKED u;
-} PACKED evtchn_op_t; /* 32 bytes */
+ } u;
+} evtchn_op_t;
#endif /* __XEN_PUBLIC_EVENT_CHANNEL_H__ */
diff --git a/xen/include/public/grant_table.h b/xen/include/public/grant_table.h
index 79c87a7cff..fb2f3f5b14 100644
--- a/xen/include/public/grant_table.h
+++ b/xen/include/public/grant_table.h
@@ -71,17 +71,17 @@
* [XEN]: This field is written by Xen and read by the sharing guest.
* [GST]: This field is written by the guest and read by Xen.
*/
-typedef struct {
+typedef struct grant_entry {
/* GTF_xxx: various type and flag information. [XEN,GST] */
- u16 flags; /* 0 */
+ u16 flags;
/* The domain being granted foreign privileges. [GST] */
- domid_t domid; /* 2 */
+ domid_t domid;
/*
* GTF_permit_access: Frame that @domid is allowed to map and access. [GST]
* GTF_accept_transfer: Frame whose ownership transferred by @domid. [XEN]
*/
- u32 frame; /* 4 */
-} PACKED grant_entry_t; /* 8 bytes */
+ u32 frame;
+} grant_entry_t;
/*
* Type of grant entry.
@@ -148,18 +148,16 @@ typedef u16 grant_ref_t;
* to be accounted to the correct grant reference!
*/
#define GNTTABOP_map_grant_ref 0
-typedef struct {
+typedef struct gnttab_map_grant_ref {
/* IN parameters. */
- memory_t host_virt_addr; /* 0 */
- MEMORY_PADDING;
- domid_t dom; /* 8 */
- grant_ref_t ref; /* 10 */
- u16 flags; /* 12: GNTMAP_* */
+ memory_t host_virt_addr;
+ domid_t dom;
+ grant_ref_t ref;
+ u16 flags; /* GNTMAP_* */
/* OUT parameters. */
- s16 handle; /* 14: +ve: handle; -ve: GNTST_* */
- memory_t dev_bus_addr; /* 16 */
- MEMORY_PADDING;
-} PACKED gnttab_map_grant_ref_t; /* 24 bytes */
+ s16 handle; /* +ve: handle; -ve: GNTST_* */
+ memory_t dev_bus_addr;
+} gnttab_map_grant_ref_t;
/*
* GNTTABOP_unmap_grant_ref: Destroy one or more grant-reference mappings
@@ -173,17 +171,14 @@ typedef struct {
* mappings will remain in the device or host TLBs.
*/
#define GNTTABOP_unmap_grant_ref 1
-typedef struct {
+typedef struct gnttab_unmap_grant_ref {
/* IN parameters. */
- memory_t host_virt_addr; /* 0 */
- MEMORY_PADDING;
- memory_t dev_bus_addr; /* 8 */
- MEMORY_PADDING;
- u16 handle; /* 16 */
+ memory_t host_virt_addr;
+ memory_t dev_bus_addr;
+ u16 handle;
/* OUT parameters. */
- s16 status; /* 18: GNTST_* */
- u32 __pad;
-} PACKED gnttab_unmap_grant_ref_t; /* 24 bytes */
+ s16 status; /* GNTST_* */
+} gnttab_unmap_grant_ref_t;
#define GNTUNMAP_DEV_FROM_VIRT (~0U)
@@ -197,28 +192,26 @@ typedef struct {
* 3. Xen may not support more than a single grant-table page per domain.
*/
#define GNTTABOP_setup_table 2
-typedef struct {
+typedef struct gnttab_setup_table {
/* IN parameters. */
- domid_t dom; /* 0 */
- u16 nr_frames; /* 2 */
- u16 __pad;
+ domid_t dom;
+ u16 nr_frames;
/* OUT parameters. */
- s16 status; /* 6: GNTST_* */
- unsigned long *frame_list; /* 8 */
- MEMORY_PADDING;
-} PACKED gnttab_setup_table_t; /* 16 bytes */
+ s16 status; /* GNTST_* */
+ unsigned long *frame_list;
+} gnttab_setup_table_t;
/*
* GNTTABOP_dump_table: Dump the contents of the grant table to the
* xen console. Debugging use only.
*/
#define GNTTABOP_dump_table 3
-typedef struct {
+typedef struct gnttab_dump_table {
/* IN parameters. */
- domid_t dom; /* 0 */
+ domid_t dom;
/* OUT parameters. */
- s16 status; /* 2: GNTST_* */
-} PACKED gnttab_dump_table_t; /* 4 bytes */
+ s16 status; /* GNTST_* */
+} gnttab_dump_table_t;
/*
@@ -265,16 +258,14 @@ typedef struct {
"no spare translation slot in the I/O MMU", \
"permission denied" \
}
-
-
-typedef struct {
- union { /* 0 */
+
+typedef struct gnttab_op {
+ union {
gnttab_map_grant_ref_t map_grant_ref;
gnttab_unmap_grant_ref_t unmap_grant_ref;
gnttab_setup_table_t setup_table;
gnttab_dump_table_t dump_table;
- u8 __dummy[24];
- } PACKED u;
-} PACKED gnttab_op_t; /* 32 bytes */
+ } u;
+} gnttab_op_t;
#endif /* __XEN_PUBLIC_GRANT_TABLE_H__ */
diff --git a/xen/include/public/io/blkif.h b/xen/include/public/io/blkif.h
index 9bc465cf1b..664345ac2b 100644
--- a/xen/include/public/io/blkif.h
+++ b/xen/include/public/io/blkif.h
@@ -28,12 +28,12 @@
*/
#define BLKIF_MAX_SEGMENTS_PER_REQUEST 11
-typedef struct {
- u8 operation; /* 0: BLKIF_OP_??? */
- u8 nr_segments; /* 1: number of segments */
- blkif_vdev_t device; /* 2: only for read/write requests */
- unsigned long id; /* 4: private guest value, echoed in resp */
- blkif_sector_t sector_number; /* start sector idx on disk (r/w only) */
+typedef struct blkif_request {
+ u8 operation; /* BLKIF_OP_??? */
+ u8 nr_segments; /* number of segments */
+ blkif_vdev_t device; /* only for read/write requests */
+ unsigned long id; /* private guest value, echoed in resp */
+ blkif_sector_t sector_number;/* start sector idx on disk (r/w only) */
/* @f_a_s[2:0]=last_sect ; @f_a_s[5:3]=first_sect */
#ifdef CONFIG_XEN_BLKDEV_GRANT
/* @f_a_s[:16]= grant reference (16 bits) */
@@ -43,7 +43,7 @@ typedef struct {
/* @first_sect: first sector in frame to transfer (inclusive). */
/* @last_sect: last sector in frame to transfer (inclusive). */
unsigned long frame_and_sects[BLKIF_MAX_SEGMENTS_PER_REQUEST];
-} PACKED blkif_request_t;
+} blkif_request_t;
#define blkif_first_sect(_fas) (((_fas)>>3)&7)
#define blkif_last_sect(_fas) ((_fas)&7)
@@ -52,11 +52,11 @@ typedef struct {
#define blkif_gref_from_fas(_fas) ((_fas)>>16)
#endif
-typedef struct {
+typedef struct blkif_response {
unsigned long id; /* copied from request */
u8 operation; /* copied from request */
s16 status; /* BLKIF_RSP_??? */
-} PACKED blkif_response_t;
+} blkif_response_t;
#define BLKIF_RSP_ERROR -1 /* non-specific 'error' */
#define BLKIF_RSP_OKAY 0 /* non-specific 'okay' */
@@ -88,11 +88,10 @@ DEFINE_RING_TYPES(blkif, blkif_request_t, blkif_response_t);
#define VDISK_READONLY 0x4
typedef struct vdisk {
- blkif_sector_t capacity; /* 0: Size in terms of 512-byte sectors. */
- blkif_vdev_t device; /* 8: Device number (opaque 16 bit value). */
- u16 info; /* 10: Device type and flags (VDISK_*). */
- u16 sector_size; /* 12: Minimum alignment for requests. */
- u16 _pad;
-} PACKED vdisk_t; /* 16 bytes */
+ blkif_sector_t capacity; /* Size in terms of 512-byte sectors. */
+ blkif_vdev_t device; /* Device number (opaque 16 bit value). */
+ u16 info; /* Device type and flags (VDISK_*). */
+ u16 sector_size; /* Minimum alignment for requests. */
+} vdisk_t; /* 16 bytes */
#endif /* __XEN_PUBLIC_IO_BLKIF_H__ */
diff --git a/xen/include/public/io/domain_controller.h b/xen/include/public/io/domain_controller.h
index 17dedb737a..418d714e60 100644
--- a/xen/include/public/io/domain_controller.h
+++ b/xen/include/public/io/domain_controller.h
@@ -16,13 +16,13 @@
* CONTROLLER MESSAGING INTERFACE.
*/
-typedef struct {
+typedef struct control_msg {
u8 type; /* 0: echoed in response */
u8 subtype; /* 1: echoed in response */
u8 id; /* 2: echoed in response */
u8 length; /* 3: number of bytes in 'msg' */
u8 msg[60]; /* 4: type-specific message data */
-} PACKED control_msg_t; /* 64 bytes */
+} control_msg_t; /* 64 bytes */
/* These are used by the control message deferred ring. */
#define CONTROL_RING_SIZE 8
@@ -38,16 +38,16 @@ typedef u32 CONTROL_RING_IDX;
#define CONTROL_RING_MEM 520
DEFINE_RING_TYPES(ctrl, control_msg_t, control_msg_t);
-typedef struct {
+typedef struct control_if {
union {
- ctrl_sring_t tx_ring; /* 0: guest -> controller */
+ ctrl_sring_t tx_ring; /* guest -> controller */
char __x[CONTROL_RING_MEM];
- } PACKED;
+ };
union {
- ctrl_sring_t rx_ring; /* 520: controller -> guest */
+ ctrl_sring_t rx_ring; /* controller -> guest */
char __y[CONTROL_RING_MEM];
- } PACKED;
-} PACKED control_if_t; /* 1040 bytes */
+ };
+} control_if_t;
/*
* Top-level command types.
@@ -103,12 +103,12 @@ typedef struct {
#define BLKIF_INTERFACE_STATUS_DISCONNECTED 1 /* Exists but is disconnected. */
#define BLKIF_INTERFACE_STATUS_CONNECTED 2 /* Exists and is connected. */
#define BLKIF_INTERFACE_STATUS_CHANGED 3 /* A device has been added or removed. */
-typedef struct {
- u32 handle; /* 0 */
- u32 status; /* 4 */
- u16 evtchn; /* 8: (only if status == BLKIF_INTERFACE_STATUS_CONNECTED). */
- domid_t domid; /* 10: status != BLKIF_INTERFACE_STATUS_DESTROYED */
-} PACKED blkif_fe_interface_status_t; /* 12 bytes */
+typedef struct blkif_fe_interface_status {
+ u32 handle;
+ u32 status;
+ u16 evtchn; /* (only if status == BLKIF_INTERFACE_STATUS_CONNECTED). */
+ domid_t domid; /* status != BLKIF_INTERFACE_STATUS_DESTROYED */
+} blkif_fe_interface_status_t;
/*
* CMSG_BLKIF_FE_DRIVER_STATUS:
@@ -124,46 +124,44 @@ typedef struct {
*/
#define BLKIF_DRIVER_STATUS_DOWN 0
#define BLKIF_DRIVER_STATUS_UP 1
-typedef struct {
+typedef struct blkif_fe_driver_status {
/* IN */
- u32 status; /* 0: BLKIF_DRIVER_STATUS_??? */
+ u32 status; /* BLKIF_DRIVER_STATUS_??? */
/* OUT */
/* Driver should query interfaces [0..max_handle]. */
- u32 max_handle; /* 4 */
-} PACKED blkif_fe_driver_status_t; /* 8 bytes */
+ u32 max_handle;
+} blkif_fe_driver_status_t;
/*
* CMSG_BLKIF_FE_INTERFACE_CONNECT:
* If successful, the domain controller will acknowledge with a
* STATUS_CONNECTED message.
*/
-typedef struct {
- u32 handle; /* 0 */
- u32 __pad;
- memory_t shmem_frame; /* 8 */
- MEMORY_PADDING;
-} PACKED blkif_fe_interface_connect_t; /* 16 bytes */
+typedef struct blkif_fe_interface_connect {
+ u32 handle;
+ memory_t shmem_frame;
+} blkif_fe_interface_connect_t;
/*
* CMSG_BLKIF_FE_INTERFACE_DISCONNECT:
* If successful, the domain controller will acknowledge with a
* STATUS_DISCONNECTED message.
*/
-typedef struct {
- u32 handle; /* 0 */
-} PACKED blkif_fe_interface_disconnect_t; /* 4 bytes */
+typedef struct blkif_fe_interface_disconnect {
+ u32 handle;
+} blkif_fe_interface_disconnect_t;
/*
* CMSG_BLKIF_FE_INTERFACE_QUERY:
*/
-typedef struct {
+typedef struct blkif_fe_interface_query {
/* IN */
- u32 handle; /* 0 */
+ u32 handle;
/* OUT */
- u32 status; /* 4 */
- u16 evtchn; /* 8: (only if status == BLKIF_INTERFACE_STATUS_CONNECTED). */
- domid_t domid; /* 10: status != BLKIF_INTERFACE_STATUS_DESTROYED */
-} PACKED blkif_fe_interface_query_t; /* 12 bytes */
+ u32 status;
+ u16 evtchn; /* (only if status == BLKIF_INTERFACE_STATUS_CONNECTED). */
+ domid_t domid; /* status != BLKIF_INTERFACE_STATUS_DESTROYED */
+} blkif_fe_interface_query_t;
/******************************************************************************
@@ -218,14 +216,13 @@ typedef struct {
* created. The controller will send a DOWN notification to the front-end
* driver.
*/
-typedef struct {
+typedef struct blkif_be_create {
/* IN */
- domid_t domid; /* 0: Domain attached to new interface. */
- u16 __pad;
- u32 blkif_handle; /* 4: Domain-specific interface handle. */
+ domid_t domid; /* Domain attached to new interface. */
+ u32 blkif_handle; /* Domain-specific interface handle. */
/* OUT */
- u32 status; /* 8 */
-} PACKED blkif_be_create_t; /* 12 bytes */
+ u32 status;
+} blkif_be_create_t;
/*
* CMSG_BLKIF_BE_DESTROY:
@@ -233,14 +230,13 @@ typedef struct {
* torn down. The controller will send a DESTROYED notification to the
* front-end driver.
*/
-typedef struct {
+typedef struct blkif_be_destroy {
/* IN */
- domid_t domid; /* 0: Identify interface to be destroyed. */
- u16 __pad;
- u32 blkif_handle; /* 4: ...ditto... */
+ domid_t domid; /* Identify interface to be destroyed. */
+ u32 blkif_handle; /* ...ditto... */
/* OUT */
- u32 status; /* 8 */
-} PACKED blkif_be_destroy_t; /* 12 bytes */
+ u32 status;
+} blkif_be_destroy_t;
/*
* CMSG_BLKIF_BE_CONNECT:
@@ -248,17 +244,15 @@ typedef struct {
* connected. The controller will send a CONNECTED notification to the
* front-end driver.
*/
-typedef struct {
+typedef struct blkif_be_connect {
/* IN */
- domid_t domid; /* 0: Domain attached to new interface. */
- u16 __pad;
- u32 blkif_handle; /* 4: Domain-specific interface handle. */
- memory_t shmem_frame; /* 8: Page cont. shared comms window. */
- MEMORY_PADDING;
- u32 evtchn; /* 16: Event channel for notifications. */
+ domid_t domid; /* Domain attached to new interface. */
+ u32 blkif_handle; /* Domain-specific interface handle. */
+ memory_t shmem_frame; /* Page cont. shared comms window. */
+ u32 evtchn; /* Event channel for notifications. */
/* OUT */
- u32 status; /* 20 */
-} PACKED blkif_be_connect_t; /* 24 bytes */
+ u32 status;
+} blkif_be_connect_t;
/*
* CMSG_BLKIF_BE_DISCONNECT:
@@ -266,40 +260,36 @@ typedef struct {
* disconnected. The controller will send a DOWN notification to the front-end
* driver.
*/
-typedef struct {
+typedef struct blkif_be_disconnect {
/* IN */
- domid_t domid; /* 0: Domain attached to new interface. */
- u16 __pad;
- u32 blkif_handle; /* 4: Domain-specific interface handle. */
+ domid_t domid; /* Domain attached to new interface. */
+ u32 blkif_handle; /* Domain-specific interface handle. */
/* OUT */
- u32 status; /* 8 */
-} PACKED blkif_be_disconnect_t; /* 12 bytes */
+ u32 status;
+} blkif_be_disconnect_t;
/* CMSG_BLKIF_BE_VBD_CREATE */
-typedef struct {
+typedef struct blkif_be_vbd_create {
/* IN */
- domid_t domid; /* 0: Identify blkdev interface. */
- u16 __pad;
- u32 blkif_handle; /* 4: ...ditto... */
- blkif_pdev_t pdevice; /* 8 */
- u32 dev_handle; /* 12: Extended device id field. */
- blkif_vdev_t vdevice; /* 16: Interface-specific id for this VBD. */
- u16 readonly; /* 18: Non-zero -> VBD isn't writable. */
+ domid_t domid; /* Identify blkdev interface. */
+ u32 blkif_handle; /* ...ditto... */
+ blkif_pdev_t pdevice;
+ u32 dev_handle; /* Extended device id field. */
+ blkif_vdev_t vdevice; /* Interface-specific id for this VBD. */
+ u16 readonly; /* Non-zero -> VBD isn't writable. */
/* OUT */
- u32 status; /* 20 */
-} PACKED blkif_be_vbd_create_t; /* 24 bytes */
+ u32 status;
+} blkif_be_vbd_create_t;
/* CMSG_BLKIF_BE_VBD_DESTROY */
-typedef struct {
+typedef struct blkif_be_vbd_destroy {
/* IN */
- domid_t domid; /* 0: Identify blkdev interface. */
- u16 __pad0; /* 2 */
- u32 blkif_handle; /* 4: ...ditto... */
- blkif_vdev_t vdevice; /* 8: Interface-specific id of the VBD. */
- u16 __pad1; /* 10 */
+ domid_t domid; /* Identify blkdev interface. */
+ u32 blkif_handle; /* ...ditto... */
+ blkif_vdev_t vdevice; /* Interface-specific id of the VBD. */
/* OUT */
- u32 status; /* 12 */
-} PACKED blkif_be_vbd_destroy_t; /* 16 bytes */
+ u32 status;
+} blkif_be_vbd_destroy_t;
/*
* CMSG_BLKIF_BE_DRIVER_STATUS:
@@ -307,9 +297,9 @@ typedef struct {
* If the driver goes DOWN while interfaces are still UP, the controller
* will automatically send DOWN notifications.
*/
-typedef struct {
- u32 status; /* 0: BLKIF_DRIVER_STATUS_??? */
-} PACKED blkif_be_driver_status_t; /* 4 bytes */
+typedef struct blkif_be_driver_status {
+ u32 status; /* BLKIF_DRIVER_STATUS_??? */
+} blkif_be_driver_status_t;
/******************************************************************************
@@ -336,13 +326,13 @@ typedef struct {
#define NETIF_INTERFACE_STATUS_DISCONNECTED 1 /* Exists but is disconnected. */
#define NETIF_INTERFACE_STATUS_CONNECTED 2 /* Exists and is connected. */
#define NETIF_INTERFACE_STATUS_CHANGED 3 /* A device has been added or removed. */
-typedef struct {
- u32 handle; /* 0 */
- u32 status; /* 4 */
- u16 evtchn; /* 8: status == NETIF_INTERFACE_STATUS_CONNECTED */
- u8 mac[6]; /* 10: status == NETIF_INTERFACE_STATUS_CONNECTED */
- domid_t domid; /* 16: status != NETIF_INTERFACE_STATUS_DESTROYED */
-} PACKED netif_fe_interface_status_t; /* 18 bytes */
+typedef struct netif_fe_interface_status {
+ u32 handle;
+ u32 status;
+ u16 evtchn; /* status == NETIF_INTERFACE_STATUS_CONNECTED */
+ u8 mac[6]; /* status == NETIF_INTERFACE_STATUS_CONNECTED */
+ domid_t domid; /* status != NETIF_INTERFACE_STATUS_DESTROYED */
+} netif_fe_interface_status_t;
/*
* CMSG_NETIF_FE_DRIVER_STATUS:
@@ -358,49 +348,46 @@ typedef struct {
*/
#define NETIF_DRIVER_STATUS_DOWN 0
#define NETIF_DRIVER_STATUS_UP 1
-typedef struct {
+typedef struct netif_fe_driver_status {
/* IN */
- u32 status; /* 0: NETIF_DRIVER_STATUS_??? */
+ u32 status; /* NETIF_DRIVER_STATUS_??? */
/* OUT */
/* Driver should query interfaces [0..max_handle]. */
- u32 max_handle; /* 4 */
-} PACKED netif_fe_driver_status_t; /* 8 bytes */
+ u32 max_handle;
+} netif_fe_driver_status_t;
/*
* CMSG_NETIF_FE_INTERFACE_CONNECT:
* If successful, the domain controller will acknowledge with a
* STATUS_CONNECTED message.
*/
-typedef struct {
- u32 handle; /* 0 */
- u32 __pad; /* 4 */
- memory_t tx_shmem_frame; /* 8 */
- MEMORY_PADDING;
- memory_t rx_shmem_frame; /* 16 */
- MEMORY_PADDING;
-} PACKED netif_fe_interface_connect_t; /* 24 bytes */
+typedef struct netif_fe_interface_connect {
+ u32 handle;
+ memory_t tx_shmem_frame;
+ memory_t rx_shmem_frame;
+} netif_fe_interface_connect_t;
/*
* CMSG_NETIF_FE_INTERFACE_DISCONNECT:
* If successful, the domain controller will acknowledge with a
* STATUS_DISCONNECTED message.
*/
-typedef struct {
- u32 handle; /* 0 */
-} PACKED netif_fe_interface_disconnect_t; /* 4 bytes */
+typedef struct netif_fe_interface_disconnect {
+ u32 handle;
+} netif_fe_interface_disconnect_t;
/*
* CMSG_NETIF_FE_INTERFACE_QUERY:
*/
-typedef struct {
+typedef struct netif_fe_interface_query {
/* IN */
- u32 handle; /* 0 */
+ u32 handle;
/* OUT */
- u32 status; /* 4 */
- u16 evtchn; /* 8: status == NETIF_INTERFACE_STATUS_CONNECTED */
- u8 mac[6]; /* 10: status == NETIF_INTERFACE_STATUS_CONNECTED */
- domid_t domid; /* 16: status != NETIF_INTERFACE_STATUS_DESTROYED */
-} PACKED netif_fe_interface_query_t; /* 18 bytes */
+ u32 status;
+ u16 evtchn; /* status == NETIF_INTERFACE_STATUS_CONNECTED */
+ u8 mac[6]; /* status == NETIF_INTERFACE_STATUS_CONNECTED */
+ domid_t domid; /* status != NETIF_INTERFACE_STATUS_DESTROYED */
+} netif_fe_interface_query_t;
/******************************************************************************
@@ -448,18 +435,15 @@ typedef struct {
* created. The controller will send a DOWN notification to the front-end
* driver.
*/
-typedef struct {
+typedef struct netif_be_create {
/* IN */
- domid_t domid; /* 0: Domain attached to new interface. */
- u16 __pad0; /* 2 */
- u32 netif_handle; /* 4: Domain-specific interface handle. */
- u8 mac[6]; /* 8 */
- u16 __pad1; /* 14 */
- u8 be_mac[6]; /* 16 */
- u16 __pad2; /* 22 */
+ domid_t domid; /* Domain attached to new interface. */
+ u32 netif_handle; /* Domain-specific interface handle. */
+ u8 mac[6];
+ u8 be_mac[6];
/* OUT */
- u32 status; /* 24 */
-} PACKED netif_be_create_t; /* 28 bytes */
+ u32 status;
+} netif_be_create_t;
/*
* CMSG_NETIF_BE_DESTROY:
@@ -467,30 +451,28 @@ typedef struct {
* torn down. The controller will send a DESTROYED notification to the
* front-end driver.
*/
-typedef struct {
+typedef struct netif_be_destroy {
/* IN */
- domid_t domid; /* 0: Identify interface to be destroyed. */
- u16 __pad;
- u32 netif_handle; /* 4: ...ditto... */
+ domid_t domid; /* Identify interface to be destroyed. */
+ u32 netif_handle; /* ...ditto... */
/* OUT */
- u32 status; /* 8 */
-} PACKED netif_be_destroy_t; /* 12 bytes */
+ u32 status;
+} netif_be_destroy_t;
/*
* CMSG_NETIF_BE_CREDITLIMIT:
* Limit a virtual interface to "credit_bytes" bytes per "period_usec"
* microseconds.
*/
-typedef struct {
+typedef struct netif_be_creditlimit {
/* IN */
- domid_t domid; /* 0: Domain attached to new interface. */
- u16 __pad0; /* 2 */
- u32 netif_handle; /* 4: Domain-specific interface handle. */
- u32 credit_bytes; /* 8: Vifs credit of bytes per period. */
- u32 period_usec; /* 12: Credit replenishment period. */
+ domid_t domid; /* Domain attached to new interface. */
+ u32 netif_handle; /* Domain-specific interface handle. */
+ u32 credit_bytes; /* Vifs credit of bytes per period. */
+ u32 period_usec; /* Credit replenishment period. */
/* OUT */
- u32 status; /* 16 */
-} PACKED netif_be_creditlimit_t; /* 20 bytes */
+ u32 status;
+} netif_be_creditlimit_t;
/*
* CMSG_NETIF_BE_CONNECT:
@@ -498,20 +480,16 @@ typedef struct {
* connected. The controller will send a CONNECTED notification to the
* front-end driver.
*/
-typedef struct {
+typedef struct netif_be_connect {
/* IN */
- domid_t domid; /* 0: Domain attached to new interface. */
- u16 __pad0; /* 2 */
- u32 netif_handle; /* 4: Domain-specific interface handle. */
- memory_t tx_shmem_frame; /* 8: Page cont. tx shared comms window. */
- MEMORY_PADDING;
- memory_t rx_shmem_frame; /* 16: Page cont. rx shared comms window. */
- MEMORY_PADDING;
- u16 evtchn; /* 24: Event channel for notifications. */
- u16 __pad1; /* 26 */
+ domid_t domid; /* Domain attached to new interface. */
+ u32 netif_handle; /* Domain-specific interface handle. */
+ memory_t tx_shmem_frame; /* Page cont. tx shared comms window. */
+ memory_t rx_shmem_frame; /* Page cont. rx shared comms window. */
+ u16 evtchn; /* Event channel for notifications. */
/* OUT */
- u32 status; /* 28 */
-} PACKED netif_be_connect_t; /* 32 bytes */
+ u32 status;
+} netif_be_connect_t;
/*
* CMSG_NETIF_BE_DISCONNECT:
@@ -519,14 +497,13 @@ typedef struct {
* disconnected. The controller will send a DOWN notification to the front-end
* driver.
*/
-typedef struct {
+typedef struct netif_be_disconnect {
/* IN */
- domid_t domid; /* 0: Domain attached to new interface. */
- u16 __pad;
- u32 netif_handle; /* 4: Domain-specific interface handle. */
+ domid_t domid; /* Domain attached to new interface. */
+ u32 netif_handle; /* Domain-specific interface handle. */
/* OUT */
- u32 status; /* 8 */
-} PACKED netif_be_disconnect_t; /* 12 bytes */
+ u32 status;
+} netif_be_disconnect_t;
/*
* CMSG_NETIF_BE_DRIVER_STATUS:
@@ -534,9 +511,9 @@ typedef struct {
* If the driver goes DOWN while interfaces are still UP, the domain
* will automatically send DOWN notifications.
*/
-typedef struct {
- u32 status; /* 0: NETIF_DRIVER_STATUS_??? */
-} PACKED netif_be_driver_status_t; /* 4 bytes */
+typedef struct netif_be_driver_status {
+ u32 status; /* NETIF_DRIVER_STATUS_??? */
+} netif_be_driver_status_t;
@@ -561,13 +538,13 @@ typedef struct {
#define USBIF_INTERFACE_STATUS_DESTROYED 0 /* Interface doesn't exist. */
#define USBIF_INTERFACE_STATUS_DISCONNECTED 1 /* Exists but is disconnected. */
#define USBIF_INTERFACE_STATUS_CONNECTED 2 /* Exists and is connected. */
-typedef struct {
- u32 status; /* 0 */
- u16 evtchn; /* 4: (only if status == BLKIF_INTERFACE_STATUS_CONNECTED). */
- domid_t domid; /* 6: status != BLKIF_INTERFACE_STATUS_DESTROYED */
- u32 bandwidth; /* 8 */
- u32 num_ports; /* 12 */
-} PACKED usbif_fe_interface_status_changed_t; /* 12 bytes */
+typedef struct usbif_fe_interface_status_changed {
+ u32 status;
+ u16 evtchn; /* (only if status == BLKIF_INTERFACE_STATUS_CONNECTED). */
+ domid_t domid; /* status != BLKIF_INTERFACE_STATUS_DESTROYED */
+ u32 bandwidth;
+ u32 num_ports;
+} usbif_fe_interface_status_changed_t;
/*
* CMSG_USBIF_FE_DRIVER_STATUS_CHANGED:
@@ -583,28 +560,27 @@ typedef struct {
*/
#define USBIF_DRIVER_STATUS_DOWN 0
#define USBIF_DRIVER_STATUS_UP 1
-typedef struct {
+typedef struct usbif_fe_driver_status_changed {
/* IN */
- u32 status; /* 0: USBIF_DRIVER_STATUS_??? */
-} PACKED usbif_fe_driver_status_changed_t; /* 4 bytes */
+ u32 status; /* USBIF_DRIVER_STATUS_??? */
+} usbif_fe_driver_status_changed_t;
/*
* CMSG_USBIF_FE_INTERFACE_CONNECT:
* If successful, the domain controller will acknowledge with a
* STATUS_CONNECTED message.
*/
-typedef struct {
- u32 __pad;
- memory_t shmem_frame; /* 8 */
- MEMORY_PADDING;
-} PACKED usbif_fe_interface_connect_t; /* 16 bytes */
+typedef struct usbif_fe_interface_connect {
+ memory_t shmem_frame;
+} usbif_fe_interface_connect_t;
/*
* CMSG_BLKIF_FE_INTERFACE_DISCONNECT:
* If successful, the domain controller will acknowledge with a
* STATUS_DISCONNECTED message.
*/
-typedef struct {} PACKED usbif_fe_interface_disconnect_t; /* 4 bytes */
+typedef struct usbif_fe_interface_disconnect {
+} usbif_fe_interface_disconnect_t;
/******************************************************************************
@@ -648,13 +624,12 @@ typedef struct {} PACKED usbif_fe_interface_disconnect_t; /* 4 bytes */
* created. The controller will send a DOWN notification to the front-end
* driver.
*/
-typedef struct {
+typedef struct usbif_be_create {
/* IN */
- domid_t domid; /* 0: Domain attached to new interface. */
- u16 __pad;
+ domid_t domid; /* Domain attached to new interface. */
/* OUT */
- u32 status; /* 8 */
-} PACKED usbif_be_create_t; /* 12 bytes */
+ u32 status;
+} usbif_be_create_t;
/*
* CMSG_USBIF_BE_DESTROY:
@@ -662,13 +637,12 @@ typedef struct {
* torn down. The controller will send a DESTROYED notification to the
* front-end driver.
*/
-typedef struct {
+typedef struct usbif_be_destroy {
/* IN */
- domid_t domid; /* 0: Identify interface to be destroyed. */
- u16 __pad;
+ domid_t domid; /* Identify interface to be destroyed. */
/* OUT */
- u32 status; /* 8 */
-} PACKED usbif_be_destroy_t; /* 12 bytes */
+ u32 status;
+} usbif_be_destroy_t;
/*
* CMSG_USBIF_BE_CONNECT:
@@ -676,19 +650,17 @@ typedef struct {
* connected. The controller will send a CONNECTED notification to the
* front-end driver.
*/
-typedef struct {
+typedef struct usbif_be_connect {
/* IN */
- domid_t domid; /* 0: Domain attached to new interface. */
- u16 __pad;
- memory_t shmem_frame; /* 8: Page cont. shared comms window. */
- MEMORY_PADDING;
- u32 evtchn; /* 16: Event channel for notifications. */
- u32 bandwidth; /* 20: Bandwidth allocated for isoch / int - us
+ domid_t domid; /* Domain attached to new interface. */
+ memory_t shmem_frame; /* Page cont. shared comms window. */
+ u32 evtchn; /* Event channel for notifications. */
+ u32 bandwidth; /* Bandwidth allocated for isoch / int - us
* per 1ms frame (ie between 0 and 900 or 800
* depending on USB version). */
/* OUT */
- u32 status; /* 24 */
-} PACKED usbif_be_connect_t; /* 28 bytes */
+ u32 status;
+} usbif_be_connect_t;
/*
* CMSG_USBIF_BE_DISCONNECT:
@@ -696,13 +668,12 @@ typedef struct {
* disconnected. The controller will send a DOWN notification to the front-end
* driver.
*/
-typedef struct {
+typedef struct usbif_be_disconnect {
/* IN */
- domid_t domid; /* 0: Domain attached to new interface. */
- u16 __pad;
+ domid_t domid; /* Domain attached to new interface. */
/* OUT */
- u32 status; /* 8 */
-} PACKED usbif_be_disconnect_t; /* 12 bytes */
+ u32 status;
+} usbif_be_disconnect_t;
/*
* CMSG_USBIF_BE_DRIVER_STATUS_CHANGED:
@@ -710,9 +681,9 @@ typedef struct {
* If the driver goes DOWN while interfaces are still UP, the controller
* will automatically send DOWN notifications.
*/
-typedef struct {
- u32 status; /* 0: USBIF_DRIVER_STATUS_??? */
-} PACKED usbif_be_driver_status_changed_t; /* 4 bytes */
+typedef struct usbif_be_driver_status_changed {
+ u32 status; /* USBIF_DRIVER_STATUS_??? */
+} usbif_be_driver_status_changed_t;
#define USB_PATH_LEN 16
@@ -721,25 +692,23 @@ typedef struct {
* Instruct the backend driver to claim any device plugged into the specified
* host port and to allow the specified domain to control that port.
*/
-typedef struct
-{
+typedef struct usbif_be_claim_port {
/* IN */
- domid_t domid; /* 0: which domain */
- u32 usbif_port; /* 6: port on the virtual root hub */
- u32 status; /* 10: status of operation */
+ domid_t domid; /* which domain */
+ u32 usbif_port; /* port on the virtual root hub */
+ u32 status; /* status of operation */
char path[USB_PATH_LEN]; /* Currently specified in the Linux style - may need to be
* converted to some OS-independent format at some stage. */
-} PACKED usbif_be_claim_port_t;
+} usbif_be_claim_port_t;
/*
* CMSG_USBIF_BE_RELEASE_PORT:
* Instruct the backend driver to release any device plugged into the specified
* host port.
*/
-typedef struct
-{
+typedef struct usbif_be_release_port {
char path[USB_PATH_LEN];
-} PACKED usbif_be_release_port_t;
+} usbif_be_release_port_t;
/******************************************************************************
* SHUTDOWN DEFINITIONS
@@ -754,10 +723,9 @@ typedef struct
/* SHUTDOWN_suspend. */
#define CMSG_SHUTDOWN_SYSRQ 3
-typedef struct {
- char key; /* 0: sysrq key */
- char __pad[3]; /* 1: */
-} PACKED shutdown_sysrq_t; /* 4 bytes */
+typedef struct shutdown_sysrq {
+ char key; /* sysrq key */
+} shutdown_sysrq_t;
/******************************************************************************
* VCPU HOTPLUG CONTROLS
@@ -773,10 +741,10 @@ typedef struct {
* CMSG_VCPU_HOTPLUG:
* Indicate which vcpu's state should change
*/
-typedef struct {
- u32 vcpu; /* 0: VCPU's whose state will change */
- u32 status; /* 4: Return code indicates success or failure. */
-} PACKED vcpu_hotplug_t;
+typedef struct vcpu_hotplug {
+ u32 vcpu; /* VCPU's whose state will change */
+ u32 status; /* Return code indicates success or failure. */
+} vcpu_hotplug_t;
/******************************************************************************
* MEMORY CONTROLS
@@ -788,12 +756,12 @@ typedef struct {
* CMSG_MEM_REQUEST:
* Request that the domain change its memory reservation.
*/
-typedef struct {
+typedef struct mem_request {
/* OUT */
- u32 target; /* 0: Target memory reservation in pages. */
+ u32 target; /* Target memory reservation in pages. */
/* IN */
- u32 status; /* 4: Return code indicates success or failure. */
-} PACKED mem_request_t; /* 8 bytes */
+ u32 status; /* Return code indicates success or failure. */
+} mem_request_t;
/******************************************************************************
@@ -801,12 +769,12 @@ typedef struct {
*/
#define CMSG_DEBUG_CONNECTION_STATUS 0
-typedef struct {
+typedef struct pdb_Connection {
#define PDB_CONNECTION_STATUS_UP 1
#define PDB_CONNECTION_STATUS_DOWN 2
u32 status;
memory_t ring; /* status: UP */
u32 evtchn; /* status: UP */
-} PACKED pdb_connection_t, *pdb_connection_p;
+} pdb_connection_t, *pdb_connection_p;
#endif /* __XEN_PUBLIC_IO_DOMAIN_CONTROLLER_H__ */
diff --git a/xen/include/public/io/netif.h b/xen/include/public/io/netif.h
index 87a5ce0a32..35ac622758 100644
--- a/xen/include/public/io/netif.h
+++ b/xen/include/public/io/netif.h
@@ -9,31 +9,28 @@
#ifndef __XEN_PUBLIC_IO_NETIF_H__
#define __XEN_PUBLIC_IO_NETIF_H__
-typedef struct {
- memory_t addr; /* 0: Machine address of packet. */
- MEMORY_PADDING;
+typedef struct netif_tx_request {
+ memory_t addr; /* Machine address of packet. */
u16 csum_blank:1; /* Proto csum field blank? */
- u16 id:15; /* 8: Echoed in response message. */
- u16 size; /* 10: Packet size in bytes. */
-} PACKED netif_tx_request_t; /* 12 bytes */
+ u16 id:15; /* Echoed in response message. */
+ u16 size; /* Packet size in bytes. */
+} netif_tx_request_t;
-typedef struct {
- u16 id; /* 0 */
- s8 status; /* 2 */
- u8 __pad; /* 3 */
-} PACKED netif_tx_response_t; /* 4 bytes */
+typedef struct netif_tx_response {
+ u16 id;
+ s8 status;
+} netif_tx_response_t;
typedef struct {
- u16 id; /* 0: Echoed in response message. */
-} PACKED netif_rx_request_t; /* 2 bytes */
+ u16 id; /* Echoed in response message. */
+} netif_rx_request_t;
typedef struct {
- memory_t addr; /* 0: Machine address of packet. */
- MEMORY_PADDING;
+ memory_t addr; /* Machine address of packet. */
u16 csum_valid:1; /* Protocol checksum is validated? */
- u16 id:15; /* 8: */
- s16 status; /* 10: -ve: BLKIF_RSP_* ; +ve: Rx'ed pkt size. */
-} PACKED netif_rx_response_t; /* 12 bytes */
+ u16 id:15;
+ s16 status; /* -ve: BLKIF_RSP_* ; +ve: Rx'ed pkt size. */
+} netif_rx_response_t;
/*
* We use a special capitalised type name because it is _essential_ that all
@@ -53,7 +50,7 @@ typedef u32 NETIF_RING_IDX;
#define NETIF_RX_RING_SIZE 256
/* This structure must fit in a memory page. */
-typedef struct {
+typedef struct netif_tx_interface {
/*
* Frontend places packets into ring at tx_req_prod.
* Frontend receives event when tx_resp_prod passes tx_event.
@@ -61,30 +58,30 @@ typedef struct {
* may use it to determine if all queued packets have been seen by the
* backend.
*/
- NETIF_RING_IDX req_prod; /* 0 */
- NETIF_RING_IDX req_cons; /* 4 */
- NETIF_RING_IDX resp_prod; /* 8 */
- NETIF_RING_IDX event; /* 12 */
- union { /* 16 */
+ NETIF_RING_IDX req_prod;
+ NETIF_RING_IDX req_cons;
+ NETIF_RING_IDX resp_prod;
+ NETIF_RING_IDX event;
+ union {
netif_tx_request_t req;
netif_tx_response_t resp;
- } PACKED ring[NETIF_TX_RING_SIZE];
-} PACKED netif_tx_interface_t;
+ } ring[NETIF_TX_RING_SIZE];
+} netif_tx_interface_t;
/* This structure must fit in a memory page. */
-typedef struct {
+typedef struct netif_rx_interface {
/*
* Frontend places empty buffers into ring at rx_req_prod.
* Frontend receives event when rx_resp_prod passes rx_event.
*/
- NETIF_RING_IDX req_prod; /* 0 */
- NETIF_RING_IDX resp_prod; /* 4 */
- NETIF_RING_IDX event; /* 8 */
- union { /* 12 */
+ NETIF_RING_IDX req_prod;
+ NETIF_RING_IDX resp_prod;
+ NETIF_RING_IDX event;
+ union {
netif_rx_request_t req;
netif_rx_response_t resp;
- } PACKED ring[NETIF_RX_RING_SIZE];
-} PACKED netif_rx_interface_t;
+ } ring[NETIF_RX_RING_SIZE];
+} netif_rx_interface_t;
/* Descriptor status values */
#define NETIF_RSP_DROPPED -2
diff --git a/xen/include/public/physdev.h b/xen/include/public/physdev.h
index 41ad23bb9f..8bee1440d0 100644
--- a/xen/include/public/physdev.h
+++ b/xen/include/public/physdev.h
@@ -11,56 +11,51 @@
#define PHYSDEVOP_APIC_WRITE 9
#define PHYSDEVOP_ASSIGN_VECTOR 10
-typedef struct {
+typedef struct physdevop_irq_status_query {
/* IN */
- u32 irq; /* 0 */
+ u32 irq;
/* OUT */
/* Need to call PHYSDEVOP_IRQ_UNMASK_NOTIFY when the IRQ has been serviced? */
#define PHYSDEVOP_IRQ_NEEDS_UNMASK_NOTIFY (1<<0)
- u32 flags; /* 4 */
-} PACKED physdevop_irq_status_query_t; /* 8 bytes */
+ u32 flags;
+} physdevop_irq_status_query_t;
-typedef struct {
+typedef struct physdevop_set_iopl {
/* IN */
- u32 iopl; /* 0 */
-} PACKED physdevop_set_iopl_t; /* 4 bytes */
+ u32 iopl;
+} physdevop_set_iopl_t;
-typedef struct {
+typedef struct physdevop_set_iobitmap {
/* IN */
- memory_t bitmap; /* 0 */
- MEMORY_PADDING;
- u32 nr_ports; /* 8 */
- u32 __pad0; /* 12 */
-} PACKED physdevop_set_iobitmap_t; /* 16 bytes */
+ memory_t bitmap;
+ u32 nr_ports;
+} physdevop_set_iobitmap_t;
-typedef struct {
+typedef struct physdevop_apic {
/* IN */
- u32 apic; /* 0 */
+ u32 apic;
u32 offset;
/* IN or OUT */
u32 value;
-} PACKED physdevop_apic_t;
+} physdevop_apic_t;
-typedef struct {
+typedef struct physdevop_irq {
/* IN */
- u32 irq; /* 0 */
+ u32 irq;
/* OUT */
u32 vector;
-} PACKED physdevop_irq_t;
+} physdevop_irq_t;
-typedef struct _physdev_op_st
-{
- u32 cmd; /* 0 */
- u32 __pad; /* 4 */
- union { /* 8 */
+typedef struct physdev_op {
+ u32 cmd;
+ union {
physdevop_irq_status_query_t irq_status_query;
physdevop_set_iopl_t set_iopl;
physdevop_set_iobitmap_t set_iobitmap;
physdevop_apic_t apic_op;
physdevop_irq_t irq_op;
- u8 __dummy[32];
- } PACKED u;
-} PACKED physdev_op_t; /* 40 bytes */
+ } u;
+} physdev_op_t;
#endif /* __XEN_PUBLIC_PHYSDEV_H__ */
diff --git a/xen/include/public/policy_ops.h b/xen/include/public/policy_ops.h
index 7814d308c7..6dfc991ee3 100644
--- a/xen/include/public/policy_ops.h
+++ b/xen/include/public/policy_ops.h
@@ -16,7 +16,6 @@
*
*/
-
#ifndef __XEN_PUBLIC_POLICY_OPS_H__
#define __XEN_PUBLIC_POLICY_OPS_H__
@@ -28,47 +27,44 @@
* This makes sure that old versions of policy tools will stop working in a
* well-defined way (rather than crashing the machine, for instance).
*/
-#define POLICY_INTERFACE_VERSION 0xAAAA0002
+#define POLICY_INTERFACE_VERSION 0xAAAA0003
/************************************************************************/
#define POLICY_SETPOLICY 4
-typedef struct {
+typedef struct policy_setpolicy {
/* IN variables. */
u16 policy_type;
- u16 padding1;
/* OUT variables */
void *pushcache;
u16 pushcache_size;
-} PACKED policy_setpolicy_t;
+} policy_setpolicy_t;
#define POLICY_GETPOLICY 5
-typedef struct {
+typedef struct policy_getpolicy {
/* IN variables. */
u16 policy_type;
- u16 padding1;
/* OUT variables */
void *pullcache;
u16 pullcache_size;
-} PACKED policy_getpolicy_t;
+} policy_getpolicy_t;
#define POLICY_DUMPSTATS 6
-typedef struct {
+typedef struct policy_dumpstats {
void *pullcache;
u16 pullcache_size;
-} PACKED policy_dumpstats_t;
+} policy_dumpstats_t;
-typedef struct {
- u32 cmd; /* 0 */
- u32 interface_version; /* 4 */ /* POLICY_INTERFACE_VERSION */
- union { /* 8 */
- u32 dummy[14]; /* 72bytes */
+typedef struct policy_op {
+ u32 cmd;
+ u32 interface_version; /* POLICY_INTERFACE_VERSION */
+ union {
policy_setpolicy_t setpolicy;
policy_getpolicy_t getpolicy;
policy_dumpstats_t dumpstats;
- } PACKED u;
-} PACKED policy_op_t; /* 80 bytes */
+ } u;
+} policy_op_t;
#endif /* __XEN_PUBLIC_POLICY_OPS_H__ */
diff --git a/xen/include/public/sched_ctl.h b/xen/include/public/sched_ctl.h
index 01d6481c6e..74566c7fed 100644
--- a/xen/include/public/sched_ctl.h
+++ b/xen/include/public/sched_ctl.h
@@ -19,8 +19,7 @@
* Generic scheduler control command - used to adjust system-wide scheduler
* parameters
*/
-struct sched_ctl_cmd
-{
+struct sched_ctl_cmd {
u32 sched_id;
u32 direction;
union {
@@ -30,33 +29,30 @@ struct sched_ctl_cmd
} u;
};
-struct sched_adjdom_cmd
-{
- u32 sched_id; /* 0 */
- u32 direction; /* 4 */
- domid_t domain; /* 8 */
- u16 __pad0;
- u32 __pad1;
- union { /* 16 */
+struct sched_adjdom_cmd {
+ u32 sched_id;
+ u32 direction;
+ domid_t domain;
+ union {
struct bvt_adjdom
{
- u32 mcu_adv; /* 16: mcu advance: inverse of weight */
- u32 warpback; /* 20: warp? */
- s32 warpvalue; /* 24: warp value */
- long long warpl; /* 32: warp limit */
- long long warpu; /* 40: unwarp time requirement */
- } PACKED bvt;
+ u32 mcu_adv; /* mcu advance: inverse of weight */
+ u32 warpback; /* warp? */
+ s32 warpvalue; /* warp value */
+ long long warpl; /* warp limit */
+ long long warpu; /* unwarp time requirement */
+ } bvt;
struct sedf_adjdom
{
- u64 period; /* 16 */
- u64 slice; /* 24 */
- u64 latency; /* 32 */
- u16 extratime; /* 36 */
- u16 weight; /* 38 */
- } PACKED sedf;
+ u64 period;
+ u64 slice;
+ u64 latency;
+ u16 extratime;
+ u16 weight;
+ } sedf;
- } PACKED u;
-} PACKED; /* 40 bytes */
+ } u;
+};
#endif /* __XEN_PUBLIC_SCHED_CTL_H__ */
diff --git a/xen/include/public/vmx_assist.h b/xen/include/public/vmx_assist.h
index b5addf0a7b..6136ce983d 100644
--- a/xen/include/public/vmx_assist.h
+++ b/xen/include/public/vmx_assist.h
@@ -43,7 +43,7 @@ union vmcs_arbytes {
g : 1,
null_bit : 1,
reserved2 : 15;
- } __attribute__((packed)) fields;
+ } fields;
unsigned int bytes;
};
diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h
index cef89b837e..357761f544 100644
--- a/xen/include/public/xen.h
+++ b/xen/include/public/xen.h
@@ -295,8 +295,7 @@ typedef struct
* Per-VCPU information goes here. This will be cleaned up more when Xen
* actually supports multi-VCPU guests.
*/
-typedef struct
-{
+typedef struct vcpu_info {
/*
* 'evtchn_upcall_pending' is written non-zero by Xen to indicate
* a pending notification for a particular VCPU. It is then cleared
@@ -322,20 +321,20 @@ typedef struct
* an upcall activation. The mask is cleared when the VCPU requests
* to block: this avoids wakeup-waiting races.
*/
- u8 evtchn_upcall_pending; /* 0 */
- u8 evtchn_upcall_mask; /* 1 */
- u8 pad0, pad1;
- u32 evtchn_pending_sel; /* 4 */
- arch_vcpu_info_t arch; /* 8 */
-} PACKED vcpu_info_t; /* 8 + arch */
+ u8 evtchn_upcall_pending;
+ u8 evtchn_upcall_mask;
+ u32 evtchn_pending_sel;
+#ifdef __ARCH_HAS_VCPU_INFO
+ arch_vcpu_info_t arch;
+#endif
+} vcpu_info_t;
/*
* Xen/kernel shared data -- pointer provided in start_info.
* NB. We expect that this struct is smaller than a page.
*/
-typedef struct shared_info_st
-{
- vcpu_info_t vcpu_data[MAX_VIRT_CPUS]; /* 0 */
+typedef struct shared_info {
+ vcpu_info_t vcpu_data[MAX_VIRT_CPUS];
u32 n_vcpu;
@@ -370,14 +369,14 @@ typedef struct shared_info_st
* 32-bit selector to be set. Each bit in the selector covers a 32-bit
* word in the PENDING bitfield array.
*/
- u32 evtchn_pending[32]; /* 4 */
- u32 evtchn_mask[32]; /* 136 */
+ u32 evtchn_pending[32];
+ u32 evtchn_mask[32];
/*
* Time: The following abstractions are exposed: System Time, Clock Time,
* Domain Virtual Time. Domains can access Cycle counter time directly.
*/
- u64 cpu_freq; /* 264: CPU frequency (Hz). */
+ u64 cpu_freq; /* CPU frequency (Hz). */
/*
* The following values are updated periodically (and not necessarily
@@ -386,8 +385,8 @@ typedef struct shared_info_st
* incremented immediately after. See the Xen-specific Linux code for an
* example of how to read these values safely (arch/xen/kernel/time.c).
*/
- u32 time_version1; /* 272 */
- u32 time_version2; /* 276 */
+ u32 time_version1;
+ u32 time_version2;
tsc_timestamp_t tsc_timestamp; /* TSC at last update of time vals. */
u64 system_time; /* Time, in nanosecs, since boot. */
u32 wc_sec; /* Secs 00:00:00 UTC, Jan 1, 1970. */
@@ -399,12 +398,12 @@ typedef struct shared_info_st
* Allow a domain to specify a timeout value in system time and
* domain virtual time.
*/
- u64 wall_timeout; /* 312 */
- u64 domain_timeout; /* 320 */
+ u64 wall_timeout;
+ u64 domain_timeout;
arch_shared_info_t arch;
-} PACKED shared_info_t;
+} shared_info_t;
/*
* Start-of-day memory layout for the initial domain (DOM0):
@@ -432,31 +431,22 @@ typedef struct shared_info_st
*/
#define MAX_GUEST_CMDLINE 1024
-typedef struct {
- /* THE FOLLOWING ARE FILLED IN BOTH ON INITIAL BOOT AND ON RESUME. */
- memory_t nr_pages; /* 0: Total pages allocated to this domain. */
- _MEMORY_PADDING(A);
- memory_t shared_info; /* 8: MACHINE address of shared info struct. */
- _MEMORY_PADDING(B);
- u32 flags; /* 16: SIF_xxx flags. */
- u16 domain_controller_evtchn; /* 20 */
- u16 __pad;
- /* THE FOLLOWING ARE ONLY FILLED IN ON INITIAL BOOT (NOT RESUME). */
- memory_t pt_base; /* 24: VIRTUAL address of page directory. */
- _MEMORY_PADDING(C);
- memory_t nr_pt_frames; /* 32: Number of bootstrap p.t. frames. */
- _MEMORY_PADDING(D);
- memory_t mfn_list; /* 40: VIRTUAL address of page-frame list. */
- _MEMORY_PADDING(E);
- memory_t mod_start; /* 48: VIRTUAL address of pre-loaded module. */
- _MEMORY_PADDING(F);
- memory_t mod_len; /* 56: Size (bytes) of pre-loaded module. */
- _MEMORY_PADDING(G);
- s8 cmd_line[MAX_GUEST_CMDLINE]; /* 64 */
- memory_t store_page; /* 1088: VIRTUAL address of store page. */
- _MEMORY_PADDING(H);
- u16 store_evtchn; /* 1096: Event channel for store communication. */
-} PACKED start_info_t; /* 1098 bytes */
+typedef struct start_info {
+ /* THE FOLLOWING ARE FILLED IN BOTH ON INITIAL BOOT AND ON RESUME. */
+ memory_t nr_pages; /* Total pages allocated to this domain. */
+ memory_t shared_info; /* MACHINE address of shared info struct. */
+ u32 flags; /* SIF_xxx flags. */
+ u16 domain_controller_evtchn;
+ /* THE FOLLOWING ARE ONLY FILLED IN ON INITIAL BOOT (NOT RESUME). */
+ memory_t pt_base; /* VIRTUAL address of page directory. */
+ memory_t nr_pt_frames; /* Number of bootstrap p.t. frames. */
+ memory_t mfn_list; /* VIRTUAL address of page-frame list. */
+ memory_t mod_start; /* VIRTUAL address of pre-loaded module. */
+ memory_t mod_len; /* Size (bytes) of pre-loaded module. */
+ s8 cmd_line[MAX_GUEST_CMDLINE];
+ memory_t store_page; /* VIRTUAL address of store page. */
+ u16 store_evtchn; /* Event channel for store communication. */
+} start_info_t;
/* These flags are passed in the 'flags' field of start_info_t. */
#define SIF_PRIVILEGED (1<<0) /* Is the domain privileged? */