Add qemu 2.4.0
[kvmfornfv.git] / qemu / roms / ipxe / src / include / ipxe / blockdev.h
diff --git a/qemu/roms/ipxe/src/include/ipxe/blockdev.h b/qemu/roms/ipxe/src/include/ipxe/blockdev.h
new file mode 100644 (file)
index 0000000..9f0a9f7
--- /dev/null
@@ -0,0 +1,55 @@
+#ifndef _IPXE_BLOCKDEV_H
+#define _IPXE_BLOCKDEV_H
+
+/**
+ * @file
+ *
+ * Block devices
+ *
+ */
+
+FILE_LICENCE ( GPL2_OR_LATER );
+
+#include <stdint.h>
+#include <ipxe/uaccess.h>
+#include <ipxe/interface.h>
+
+/** Block device capacity */
+struct block_device_capacity {
+       /** Total number of blocks */
+       uint64_t blocks;
+       /** Block size */
+       size_t blksize;
+       /** Maximum number of blocks per single transfer */
+       unsigned int max_count;
+};
+
+extern int block_read ( struct interface *control, struct interface *data,
+                       uint64_t lba, unsigned int count,
+                       userptr_t buffer, size_t len );
+#define block_read_TYPE( object_type )                                 \
+       typeof ( int ( object_type, struct interface *data,             \
+                      uint64_t lba, unsigned int count,                \
+                      userptr_t buffer, size_t len ) )
+
+extern int block_write ( struct interface *control, struct interface *data,
+                        uint64_t lba, unsigned int count,
+                        userptr_t buffer, size_t len );
+#define block_write_TYPE( object_type )                                        \
+       typeof ( int ( object_type, struct interface *data,             \
+                      uint64_t lba, unsigned int count,                \
+                      userptr_t buffer, size_t len ) )
+
+extern int block_read_capacity ( struct interface *control,
+                                struct interface *data );
+#define block_read_capacity_TYPE( object_type )                                \
+       typeof ( int ( object_type, struct interface *data ) )
+
+extern void block_capacity ( struct interface *intf,
+                            struct block_device_capacity *capacity );
+#define block_capacity_TYPE( object_type )                             \
+       typeof ( void ( object_type,                                    \
+                       struct block_device_capacity *capacity ) )
+
+
+#endif /* _IPXE_BLOCKDEV_H */