diff options
-rw-r--r-- | drivers/staging/hv/include/VmbusChannelInterface.h | 134 |
1 files changed, 52 insertions, 82 deletions
diff --git a/drivers/staging/hv/include/VmbusChannelInterface.h b/drivers/staging/hv/include/VmbusChannelInterface.h index 8ee8a073c15..953e1560980 100644 --- a/drivers/staging/hv/include/VmbusChannelInterface.h +++ b/drivers/staging/hv/include/VmbusChannelInterface.h @@ -21,101 +21,71 @@ * */ +#ifndef __VMBUSCHANNELINTERFACE_H +#define __VMBUSCHANNELINTERFACE_H -#pragma once -/* allow nameless unions */ -/* #pragma warning(disable : 4201) */ - - -/* A revision number of vmbus that is used for ensuring both ends on a */ -/* partition are using compatible versions. */ - -#define VMBUS_REVISION_NUMBER 13 - +/* + * A revision number of vmbus that is used for ensuring both ends on a + * partition are using compatible versions. + */ +#define VMBUS_REVISION_NUMBER 13 /* Make maximum size of pipe payload of 16K */ - -#define MAX_PIPE_DATA_PAYLOAD (sizeof(BYTE) * 16384) - +#define MAX_PIPE_DATA_PAYLOAD (sizeof(u8) * 16384) /* Define PipeMode values. */ - -#define VMBUS_PIPE_TYPE_BYTE 0x00000000 -#define VMBUS_PIPE_TYPE_MESSAGE 0x00000004 - +#define VMBUS_PIPE_TYPE_BYTE 0x00000000 +#define VMBUS_PIPE_TYPE_MESSAGE 0x00000004 /* The size of the user defined data buffer for non-pipe offers. */ - -#define MAX_USER_DEFINED_BYTES 120 - +#define MAX_USER_DEFINED_BYTES 120 /* The size of the user defined data buffer for pipe offers. */ +#define MAX_PIPE_USER_DEFINED_BYTES 116 -#define MAX_PIPE_USER_DEFINED_BYTES 116 - - - -/* At the center of the Channel Management library is */ -/* the Channel Offer. This struct contains the */ -/* fundamental information about an offer. */ - -#pragma pack(push,1) - -typedef struct -{ - - struct hv_guid InterfaceType; - struct hv_guid InterfaceInstance; - u64 InterruptLatencyIn100nsUnits; - u32 InterfaceRevision; - u32 ServerContextAreaSize; /* in bytes */ - u16 ChannelFlags; - u16 MmioMegabytes; /* in bytes * 1024 * 1024 */ - - union - { - - /* Non-pipes: The user has MAX_USER_DEFINED_BYTES bytes. */ - - struct - { - unsigned char UserDefined[MAX_USER_DEFINED_BYTES]; - } Standard; - - - /* Pipes: The following sructure is an integrated pipe protocol, which */ - /* is implemented on top of standard user-defined data. Pipe clients */ - /* have MAX_PIPE_USER_DEFINED_BYTES left for their own use. */ - - struct - { - u32 PipeMode; - unsigned char UserDefined[MAX_PIPE_USER_DEFINED_BYTES]; - } Pipe; - } u; - u32 Padding; -} VMBUS_CHANNEL_OFFER, *PVMBUS_CHANNEL_OFFER; -#pragma pack(pop) - +/* + * At the center of the Channel Management library is the Channel Offer. This + * struct contains the fundamental information about an offer. + */ +typedef struct { + struct hv_guid InterfaceType; + struct hv_guid InterfaceInstance; + u64 InterruptLatencyIn100nsUnits; + u32 InterfaceRevision; + u32 ServerContextAreaSize; /* in bytes */ + u16 ChannelFlags; + u16 MmioMegabytes; /* in bytes * 1024 * 1024 */ + + union { + /* Non-pipes: The user has MAX_USER_DEFINED_BYTES bytes. */ + struct { + unsigned char UserDefined[MAX_USER_DEFINED_BYTES]; + } Standard; + + /* + * Pipes: + * The following sructure is an integrated pipe protocol, which + * is implemented on top of standard user-defined data. Pipe + * clients have MAX_PIPE_USER_DEFINED_BYTES left for their own + * use. + */ + struct { + u32 PipeMode; + unsigned char UserDefined[MAX_PIPE_USER_DEFINED_BYTES]; + } Pipe; + } u; + u32 Padding; +} __attribute__((packed)) VMBUS_CHANNEL_OFFER, *PVMBUS_CHANNEL_OFFER; typedef u32 GPADL_HANDLE; - /* Server Flags */ +#define VMBUS_CHANNEL_ENUMERATE_DEVICE_INTERFACE 1 +#define VMBUS_CHANNEL_SERVER_SUPPORTS_TRANSFER_PAGES 2 +#define VMBUS_CHANNEL_SERVER_SUPPORTS_GPADLS 4 +#define VMBUS_CHANNEL_NAMED_PIPE_MODE 0x10 +#define VMBUS_CHANNEL_LOOPBACK_OFFER 0x100 +#define VMBUS_CHANNEL_PARENT_OFFER 0x200 +#define VMBUS_CHANNEL_REQUEST_MONITORED_NOTIFICATION 0x400 - -#define VMBUS_CHANNEL_ENUMERATE_DEVICE_INTERFACE 1 -#define VMBUS_CHANNEL_SERVER_SUPPORTS_TRANSFER_PAGES 2 -#define VMBUS_CHANNEL_SERVER_SUPPORTS_GPADLS 4 -#define VMBUS_CHANNEL_NAMED_PIPE_MODE 0x10 -#define VMBUS_CHANNEL_LOOPBACK_OFFER 0x100 -#define VMBUS_CHANNEL_PARENT_OFFER 0x200 -#define VMBUS_CHANNEL_REQUEST_MONITORED_NOTIFICATION 0x400 - - -/* TEMPTEMP -- move this next define to devioctl.h some day */ - - -#ifndef FILE_DEVICE_VMBUS -#define FILE_DEVICE_VMBUS 0x0000003E #endif |