*/\r
\r
#ifndef blkif_vdev_t\r
-#define blkif_vdev_t UINT16\r
+#define blkif_vdev_t UINT16\r
#endif\r
-#define blkif_sector_t UINT64\r
+#define blkif_sector_t UINT64\r
\r
/*\r
* Feature and Parameter Negotiation\r
/*\r
* REQUEST CODES.\r
*/\r
-#define BLKIF_OP_READ 0\r
-#define BLKIF_OP_WRITE 1\r
+#define BLKIF_OP_READ 0\r
+#define BLKIF_OP_WRITE 1\r
+\r
/*\r
* All writes issued prior to a request with the BLKIF_OP_WRITE_BARRIER\r
* operation code ("barrier request") must be completed prior to the\r
*\r
* Optional. See "feature-barrier" XenBus node documentation above.\r
*/\r
-#define BLKIF_OP_WRITE_BARRIER 2\r
+#define BLKIF_OP_WRITE_BARRIER 2\r
+\r
/*\r
* Commit any uncommitted contents of the backing device's volatile cache\r
* to stable storage.\r
*\r
* Optional. See "feature-flush-cache" XenBus node documentation above.\r
*/\r
-#define BLKIF_OP_FLUSH_DISKCACHE 3\r
+#define BLKIF_OP_FLUSH_DISKCACHE 3\r
+\r
/*\r
* Used in SLES sources for device specific command packet\r
* contained within the request. Reserved for that purpose.\r
*/\r
-#define BLKIF_OP_RESERVED_1 4\r
+#define BLKIF_OP_RESERVED_1 4\r
+\r
/*\r
* Indicate to the backend device that a region of storage is no longer in\r
* use, and may be discarded at any time without impact to the client. If\r
* "discard-granularity", and "discard-secure" in the XenBus node\r
* documentation above.\r
*/\r
-#define BLKIF_OP_DISCARD 5\r
+#define BLKIF_OP_DISCARD 5\r
\r
/*\r
* Recognized if "feature-max-indirect-segments" in present in the backend\r
* If a backend does not recognize BLKIF_OP_INDIRECT, it should *not*\r
* create the "feature-max-indirect-segments" node!\r
*/\r
-#define BLKIF_OP_INDIRECT 6\r
+#define BLKIF_OP_INDIRECT 6\r
\r
/*\r
* Maximum scatter/gather segments per request.\r
* This is carefully chosen so that sizeof(blkif_ring_t) <= PAGE_SIZE.\r
* NB. This could be 12 if the ring indexes weren't stored in the same page.\r
*/\r
-#define BLKIF_MAX_SEGMENTS_PER_REQUEST 11\r
+#define BLKIF_MAX_SEGMENTS_PER_REQUEST 11\r
\r
/*\r
* Maximum number of indirect pages to use per request.\r
*/\r
-#define BLKIF_MAX_INDIRECT_PAGES_PER_REQUEST 8\r
+#define BLKIF_MAX_INDIRECT_PAGES_PER_REQUEST 8\r
\r
/*\r
* NB. first_sect and last_sect in blkif_request_segment, as well as\r
* 512-byte units.\r
*/\r
struct blkif_request_segment {\r
- grant_ref_t gref; /* reference to I/O buffer frame */\r
- /* @first_sect: first sector in frame to transfer (inclusive). */\r
- /* @last_sect: last sector in frame to transfer (inclusive). */\r
- UINT8 first_sect, last_sect;\r
+ grant_ref_t gref; /* reference to I/O buffer frame */\r
+ /* @first_sect: first sector in frame to transfer (inclusive). */\r
+ /* @last_sect: last sector in frame to transfer (inclusive). */\r
+ UINT8 first_sect, last_sect;\r
};\r
\r
/*\r
* Starting ring element for any I/O request.\r
*/\r
-#if defined(MDE_CPU_IA32)\r
+#if defined (MDE_CPU_IA32)\r
//\r
// pack(4) is necessary when these structs are compiled for Ia32.\r
// Without it, the struct will have a different alignment than the one\r
// a backend expect for a 32bit guest.\r
//\r
-#pragma pack(4)\r
+ #pragma pack(4)\r
#endif\r
struct blkif_request {\r
- UINT8 operation; /* BLKIF_OP_??? */\r
- UINT8 nr_segments; /* number of segments */\r
- blkif_vdev_t handle; /* only for read/write requests */\r
- UINT64 id; /* private guest value, echoed in resp */\r
- blkif_sector_t sector_number;/* start sector idx on disk (r/w only) */\r
- struct blkif_request_segment seg[BLKIF_MAX_SEGMENTS_PER_REQUEST];\r
+ UINT8 operation; /* BLKIF_OP_??? */\r
+ UINT8 nr_segments; /* number of segments */\r
+ blkif_vdev_t handle; /* only for read/write requests */\r
+ UINT64 id; /* private guest value, echoed in resp */\r
+ blkif_sector_t sector_number; /* start sector idx on disk (r/w only) */\r
+ struct blkif_request_segment seg[BLKIF_MAX_SEGMENTS_PER_REQUEST];\r
};\r
+\r
typedef struct blkif_request blkif_request_t;\r
\r
/*\r
* sizeof(struct blkif_request_discard) <= sizeof(struct blkif_request)\r
*/\r
struct blkif_request_discard {\r
- UINT8 operation; /* BLKIF_OP_DISCARD */\r
- UINT8 flag; /* BLKIF_DISCARD_SECURE or zero */\r
-#define BLKIF_DISCARD_SECURE (1<<0) /* ignored if discard-secure=0 */\r
- blkif_vdev_t handle; /* same as for read/write requests */\r
- UINT64 id; /* private guest value, echoed in resp */\r
- blkif_sector_t sector_number;/* start sector idx on disk */\r
- UINT64 nr_sectors; /* number of contiguous sectors to discard*/\r
+ UINT8 operation; /* BLKIF_OP_DISCARD */\r
+ UINT8 flag; /* BLKIF_DISCARD_SECURE or zero */\r
+ #define BLKIF_DISCARD_SECURE (1<<0) /* ignored if discard-secure=0 */\r
+ blkif_vdev_t handle; /* same as for read/write requests */\r
+ UINT64 id; /* private guest value, echoed in resp */\r
+ blkif_sector_t sector_number; /* start sector idx on disk */\r
+ UINT64 nr_sectors; /* number of contiguous sectors to discard*/\r
};\r
+\r
typedef struct blkif_request_discard blkif_request_discard_t;\r
\r
struct blkif_request_indirect {\r
- UINT8 operation; /* BLKIF_OP_INDIRECT */\r
- UINT8 indirect_op; /* BLKIF_OP_{READ/WRITE} */\r
- UINT16 nr_segments; /* number of segments */\r
- UINT64 id; /* private guest value, echoed in resp */\r
- blkif_sector_t sector_number;/* start sector idx on disk (r/w only) */\r
- blkif_vdev_t handle; /* same as for read/write requests */\r
- grant_ref_t indirect_grefs[BLKIF_MAX_INDIRECT_PAGES_PER_REQUEST];\r
-#ifdef MDE_CPU_IA32\r
- UINT64 pad; /* Make it 64 byte aligned on i386 */\r
-#endif\r
+ UINT8 operation; /* BLKIF_OP_INDIRECT */\r
+ UINT8 indirect_op; /* BLKIF_OP_{READ/WRITE} */\r
+ UINT16 nr_segments; /* number of segments */\r
+ UINT64 id; /* private guest value, echoed in resp */\r
+ blkif_sector_t sector_number; /* start sector idx on disk (r/w only) */\r
+ blkif_vdev_t handle; /* same as for read/write requests */\r
+ grant_ref_t indirect_grefs[BLKIF_MAX_INDIRECT_PAGES_PER_REQUEST];\r
+ #ifdef MDE_CPU_IA32\r
+ UINT64 pad; /* Make it 64 byte aligned on i386 */\r
+ #endif\r
};\r
+\r
typedef struct blkif_request_indirect blkif_request_indirect_t;\r
\r
struct blkif_response {\r
- UINT64 id; /* copied from request */\r
- UINT8 operation; /* copied from request */\r
- INT16 status; /* BLKIF_RSP_??? */\r
+ UINT64 id; /* copied from request */\r
+ UINT8 operation; /* copied from request */\r
+ INT16 status; /* BLKIF_RSP_??? */\r
};\r
+\r
typedef struct blkif_response blkif_response_t;\r
-#if defined(MDE_CPU_IA32)\r
-#pragma pack()\r
+#if defined (MDE_CPU_IA32)\r
+ #pragma pack()\r
#endif\r
\r
/*\r
* STATUS RETURN CODES.\r
*/\r
- /* Operation not supported (only happens on barrier writes). */\r
+/* Operation not supported (only happens on barrier writes). */\r
#define BLKIF_RSP_EOPNOTSUPP -2\r
- /* Operation failed for some unspecified reason (-EIO). */\r
-#define BLKIF_RSP_ERROR -1\r
- /* Operation completed successfully. */\r
-#define BLKIF_RSP_OKAY 0\r
+/* Operation failed for some unspecified reason (-EIO). */\r
+#define BLKIF_RSP_ERROR -1\r
+/* Operation completed successfully. */\r
+#define BLKIF_RSP_OKAY 0\r
\r
/*\r
* Generate blkif ring structures and types.\r
*/\r
-DEFINE_RING_TYPES(blkif, struct blkif_request, struct blkif_response);\r
+DEFINE_RING_TYPES (blkif, struct blkif_request, struct blkif_response);\r
\r
-#define VDISK_CDROM 0x1\r
-#define VDISK_REMOVABLE 0x2\r
-#define VDISK_READONLY 0x4\r
+#define VDISK_CDROM 0x1\r
+#define VDISK_REMOVABLE 0x2\r
+#define VDISK_READONLY 0x4\r
\r
#endif /* __XEN_PUBLIC_IO_BLKIF_H__ */\r
\r