u32 reserved;
u32 rangecount;
struct hv_page_buffer range[MAX_PAGE_BUFFER_COUNT];
-} __attribute__((packed));
+} __packed;
/* The format must be the same as struct vmdata_gpa_direct */
struct vmbus_channel_packet_multipage_buffer {
u32 reserved;
u32 rangecount; /* Always 1 in this case */
struct hv_multipage_buffer range;
-} __attribute__((packed));
+} __packed;
extern int vmbus_open(struct vmbus_channel *channel,
struct vmbus_channel_message_header {
enum vmbus_channel_message_type msgtype;
u32 padding;
-} __attribute__((packed));
+} __packed;
/* Query VMBus Version parameters */
struct vmbus_channel_query_vmbus_version {
struct vmbus_channel_message_header header;
u32 version;
-} __attribute__((packed));
+} __packed;
/* VMBus Version Supported parameters */
struct vmbus_channel_version_supported {
struct vmbus_channel_message_header header;
bool version_supported;
-} __attribute__((packed));
+} __packed;
/* Offer Channel parameters */
struct vmbus_channel_offer_channel {
u32 child_relid;
u8 monitorid;
bool monitor_allocated;
-} __attribute__((packed));
+} __packed;
/* Rescind Offer parameters */
struct vmbus_channel_rescind_offer {
struct vmbus_channel_message_header header;
u32 child_relid;
-} __attribute__((packed));
+} __packed;
/*
* Request Offer -- no parameters, SynIC message contains the partition ID
/* User-specific data to be passed along to the server endpoint. */
unsigned char userdata[MAX_USER_DEFINED_BYTES];
-} __attribute__((packed));
+} __packed;
/* Open Channel Result parameters */
struct vmbus_channel_open_result {
u32 child_relid;
u32 openid;
u32 status;
-} __attribute__((packed));
+} __packed;
/* Close channel parameters; */
struct vmbus_channel_close_channel {
struct vmbus_channel_message_header header;
u32 child_relid;
-} __attribute__((packed));
+} __packed;
/* Channel Message GPADL */
#define GPADL_TYPE_RING_BUFFER 1
u16 range_buflen;
u16 rangecount;
struct gpa_range range[0];
-} __attribute__((packed));
+} __packed;
/* This is the followup packet that contains more PFNs. */
struct vmbus_channel_gpadl_body {
u32 msgnumber;
u32 gpadl;
u64 pfn[0];
-} __attribute__((packed));
+} __packed;
struct vmbus_channel_gpadl_created {
struct vmbus_channel_message_header header;
u32 child_relid;
u32 gpadl;
u32 creation_status;
-} __attribute__((packed));
+} __packed;
struct vmbus_channel_gpadl_teardown {
struct vmbus_channel_message_header header;
u32 child_relid;
u32 gpadl;
-} __attribute__((packed));
+} __packed;
struct vmbus_channel_gpadl_torndown {
struct vmbus_channel_message_header header;
u32 gpadl;
-} __attribute__((packed));
+} __packed;
#ifdef VMBUS_FEATURE_PARENT_OR_PEER_MEMORY_MAPPED_INTO_A_CHILD
struct vmbus_channel_view_range_add {
PHYSICAL_ADDRESS viewrange_base;
u64 viewrange_length;
u32 child_relid;
-} __attribute__((packed));
+} __packed;
struct vmbus_channel_view_range_remove {
struct vmbus_channel_message_header header;
PHYSICAL_ADDRESS viewrange_base;
u32 child_relid;
-} __attribute__((packed));
+} __packed;
#endif
struct vmbus_channel_relid_released {
struct vmbus_channel_message_header header;
u32 child_relid;
-} __attribute__((packed));
+} __packed;
struct vmbus_channel_initiate_contact {
struct vmbus_channel_message_header header;
u64 interrupt_page;
u64 monitor_page1;
u64 monitor_page2;
-} __attribute__((packed));
+} __packed;
struct vmbus_channel_version_response {
struct vmbus_channel_message_header header;
bool version_supported;
-} __attribute__((packed));
+} __packed;
enum vmbus_channel_state {
CHANNEL_OFFER_STATE,
struct nvsp_message_init {
u32 min_protocol_ver;
u32 max_protocol_ver;
-} __attribute__((packed));
+} __packed;
/*
* This message is used by the VSP to complete the initialization of the
u32 negotiated_protocol_ver;
u32 max_mdl_chain_len;
u32 status;
-} __attribute__((packed));
+} __packed;
union nvsp_message_init_uber {
struct nvsp_message_init init;
struct nvsp_message_init_complete init_complete;
-} __attribute__((packed));
+} __packed;
/* Version 1 Messages */
struct nvsp_1_message_send_ndis_version {
u32 ndis_major_ver;
u32 ndis_minor_ver;
-} __attribute__((packed));
+} __packed;
/*
* This message is used by the VSC to send a receive buffer to the VSP. The VSP
struct nvsp_1_message_send_receive_buffer {
u32 gpadl_handle;
u16 id;
-} __attribute__((packed));
+} __packed;
struct nvsp_1_receive_buffer_section {
u32 offset;
u32 sub_alloc_size;
u32 num_sub_allocs;
u32 end_offset;
-} __attribute__((packed));
+} __packed;
/*
* This message is used by the VSP to acknowledge a receive buffer send by the
*/
struct nvsp_1_receive_buffer_section sections[1];
-} __attribute__((packed));
+} __packed;
/*
* This message is sent by the VSC to revoke the receive buffer. After the VSP
struct nvsp_1_message_send_send_buffer {
u32 gpadl_handle;
u16 id;
-} __attribute__((packed));
+} __packed;
/*
* This message is used by the VSP to acknowledge a send buffer sent by the
* decreases.
*/
u32 section_size;
-} __attribute__((packed));
+} __packed;
/*
* This message is sent by the VSC to revoke the send buffer. After the VSP
*/
u32 send_buf_section_index;
u32 send_buf_section_size;
-} __attribute__((packed));
+} __packed;
/*
* This message is used by both the VSP and the VSC to complete a RNDIS message
struct nvsp_1_message_send_rndis_packet send_rndis_pkt;
struct nvsp_1_message_send_rndis_packet_complete
send_rndis_pkt_complete;
-} __attribute__((packed));
+} __packed;
union nvsp_all_messages {
union nvsp_message_init_uber init_msg;
union nvsp_1_message_uber v1_msg;
-} __attribute__((packed));
+} __packed;
/* ALL Messages */
struct nvsp_message {
struct nvsp_message_header hdr;
union nvsp_all_messages msg;
-} __attribute__((packed));
+} __packed;
* !!! DO NOT place any fields below this !!!
*/
u8 buffer[0];
-} __attribute__((packed));
+} __packed;
struct hv_ring_buffer_info {
struct hv_ring_buffer *ring_buffer;
struct vmbuspipe_hdr {
u32 flags;
u32 msgsize;
-} __attribute__((packed));
+} __packed;
struct ic_version {
u16 major;
u16 minor;
-} __attribute__((packed));
+} __packed;
struct icmsg_hdr {
struct ic_version icverframe;
u8 ictransaction_id;
u8 icflags;
u8 reserved[2];
-} __attribute__((packed));
+} __packed;
struct icmsg_negotiate {
u16 icframe_vercnt;
u16 icmsg_vercnt;
u32 reserved;
struct ic_version icversion_data[1]; /* any size array */
-} __attribute__((packed));
+} __packed;
struct shutdown_msg_data {
u32 reason_code;
u32 timeout_seconds;
u32 flags;
u8 display_message[2048];
-} __attribute__((packed));
+} __packed;
struct heartbeat_msg_data {
u64 seq_num;
u32 reserved[8];
-} __attribute__((packed));
+} __packed;
/* Time Sync IC defs */
#define ICTIMESYNCFLAG_PROBE 0
u64 childtime;
u64 roundtriptime;
u8 flags;
-} __attribute__((packed));
+} __packed;
/* Index for each IC struct in array hv_cb_utils[] */
#define HV_SHUTDOWN_MSG 0
} pipe;
} u;
u32 padding;
-} __attribute__((packed));
+} __packed;
/* Server Flags */
#define VMBUS_CHANNEL_ENUMERATE_DEVICE_INTERFACE 1
u16 len8;
u16 flags;
u64 trans_id;
-} __attribute__((packed));
+} __packed;
struct vmpacket_header {
u32 prev_pkt_start_offset;
struct vmpacket_descriptor descriptor;
-} __attribute__((packed));
+} __packed;
struct vmtransfer_page_range {
u32 byte_count;
u32 byte_offset;
-} __attribute__((packed));
+} __packed;
struct vmtransfer_page_packet_header {
struct vmpacket_descriptor d;
u8 reserved;
u32 range_cnt;
struct vmtransfer_page_range ranges[1];
-} __attribute__((packed));
+} __packed;
struct vmgpadl_packet_header {
struct vmpacket_descriptor d;
u32 gpadl;
u32 reserved;
-} __attribute__((packed));
+} __packed;
struct vmadd_remove_transfer_page_set {
struct vmpacket_descriptor d;
u32 gpadl;
u16 xfer_pageset_id;
u16 reserved;
-} __attribute__((packed));
+} __packed;
/*
* This structure defines a range in guest physical space that can be made to
u32 gpadl;
u32 range_cnt;
struct gpa_range range[1];
-} __attribute__((packed));
+} __packed;
/*
* This is the format for a Teardown Gpadl packet, which indicates that the
struct vmpacket_descriptor d;
u32 gpadl;
u32 reserved; /* for alignment to a 8-byte boundary */
-} __attribute__((packed));
+} __packed;
/*
* This is the format for a GPA-Direct packet, which contains a set of GPA
u32 reserved;
u32 range_cnt;
struct gpa_range range[1];
-} __attribute__((packed));
+} __packed;
/* This is the format for a Additional Data Packet. */
struct vmadditional_data {
u32 offset;
u32 byte_cnt;
unsigned char data[1];
-} __attribute__((packed));
+} __packed;
union vmpacket_largest_possible_header {
struct vmpacket_descriptor simple_hdr;
/* This id is unique for each channel and will correspond with */
/* vendor specific data in the inquirydata */
unsigned long long unique_id;
-} __attribute__((packed));
+} __packed;
/* This structure is sent during the storage protocol negotiations. */
struct vmstorage_protocol_version {
* builds.
*/
unsigned short revision;
-} __attribute__((packed));
+} __packed;
/* Channel Property Flags */
#define STORAGE_CHANNEL_REMOVABLE_FLAG 0x1
/* Used during version negotiations. */
struct vmstorage_protocol_version version;
};
-} __attribute__((packed));
+} __packed;
/* Packet flags */
/*