#include <palacios/vm_dev.h>
-typedef enum {IDE_DISK, IDE_CDROM, IDE_NONE} v3_ide_dev_type_t;
+#define ATAPI_BLOCK_SIZE 2048
+#define IDE_SECTOR_SIZE 512
+
+typedef enum {IDE_NONE, IDE_DISK, IDE_CDROM} v3_ide_dev_type_t;
struct v3_ide_cd_ops {
uint32_t (*get_capacity)(void * private_data);
// Reads always operate on 2048 byte blocks
- int (*read)(uint8_t * buf, int lba, void * private_data);
-
+ int (*read)(uint8_t * buf, int block_count, uint64_t lba, void * private_data);
};
struct v3_ide_hd_ops {
-
-
+ uint64_t (*get_capacity)(void * private_data);
+ // Reads always operate on 2048 byte blocks
+ int (*read)(uint8_t * buf, int sector_count, uint64_t lba, void * private_data);
+ int (*write)(uint8_t * buf, int sector_count, uint64_t lba, void * private_data);
};
+int v3_ide_get_geometry(struct vm_device * ide_dev, int channel_num, int drive_num,
+ uint32_t * cylinders, uint32_t * heads, uint32_t * sectors);
+
+
#endif // ! __V3VEE__