|
@@ -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
|