diff options
author | ths <ths@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-12-10 02:58:34 +0000 |
---|---|---|
committer | ths <ths@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-12-10 02:58:34 +0000 |
commit | 8ccc2ace5628720347017c98a43b47b2ba23cf15 (patch) | |
tree | 1d44bbf424114d0150f3675e381a549cee08c7f6 /hw/scsi-disk.h | |
parent | cf6d911814c0278c1dae48b78359ee90215a13e6 (diff) | |
download | qemu-8ccc2ace5628720347017c98a43b47b2ba23cf15.zip qemu-8ccc2ace5628720347017c98a43b47b2ba23cf15.tar.gz qemu-8ccc2ace5628720347017c98a43b47b2ba23cf15.tar.bz2 |
SCSI cleanup, by Laurent Vivier.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3797 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'hw/scsi-disk.h')
-rw-r--r-- | hw/scsi-disk.h | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/hw/scsi-disk.h b/hw/scsi-disk.h index 9071cec..ffe894b 100644 --- a/hw/scsi-disk.h +++ b/hw/scsi-disk.h @@ -7,24 +7,25 @@ enum scsi_reason { SCSI_REASON_DATA /* Transfer complete, more data required. */ }; +typedef struct SCSIDeviceState SCSIDeviceState; typedef struct SCSIDevice SCSIDevice; typedef void (*scsi_completionfn)(void *opaque, int reason, uint32_t tag, uint32_t arg); -SCSIDevice *scsi_disk_init(BlockDriverState *bdrv, - int tcq, - scsi_completionfn completion, - void *opaque); -void scsi_disk_destroy(SCSIDevice *s); +struct SCSIDevice +{ + SCSIDeviceState *state; + void (*destroy)(SCSIDevice *s); + int32_t (*send_command)(SCSIDevice *s, uint32_t tag, uint8_t *buf, + int lun); + void (*read_data)(SCSIDevice *s, uint32_t tag); + int (*write_data)(SCSIDevice *s, uint32_t tag); + void (*cancel_io)(SCSIDevice *s, uint32_t tag); + uint8_t *(*get_buf)(SCSIDevice *s, uint32_t tag); +}; -int32_t scsi_send_command(SCSIDevice *s, uint32_t tag, uint8_t *buf, int lun); -/* SCSI data transfers are asynchrnonous. However, unlike the block IO - layer the completion routine may be called directly by - scsi_{read,write}_data. */ -void scsi_read_data(SCSIDevice *s, uint32_t tag); -int scsi_write_data(SCSIDevice *s, uint32_t tag); -void scsi_cancel_io(SCSIDevice *s, uint32_t tag); -uint8_t *scsi_get_buf(SCSIDevice *s, uint32_t tag); +SCSIDevice *scsi_disk_init(BlockDriverState *bdrv, int tcq, + scsi_completionfn completion, void *opaque); /* cdrom.c */ int cdrom_read_toc(int nb_sectors, uint8_t *buf, int msf, int start_track); |