Statistics
| Branch: | Revision:

root / hw / scsi-disk.h @ 313feaab

History | View | Annotate | Download (1.2 kB)

1
#ifndef SCSI_DISK_H
2
#define SCSI_DISK_H
3

    
4
/* scsi-disk.c */
5
enum scsi_reason {
6
    SCSI_REASON_DONE, /* Command complete.  */
7
    SCSI_REASON_DATA  /* Transfer complete, more data required.  */
8
};
9

    
10
typedef struct SCSIDeviceState SCSIDeviceState;
11
typedef struct SCSIDevice SCSIDevice;
12
typedef void (*scsi_completionfn)(void *opaque, int reason, uint32_t tag,
13
                                  uint32_t arg);
14

    
15
struct SCSIDevice
16
{
17
    SCSIDeviceState *state;
18
    void (*destroy)(SCSIDevice *s);
19
    int32_t (*send_command)(SCSIDevice *s, uint32_t tag, uint8_t *buf,
20
                            int lun);
21
    void (*read_data)(SCSIDevice *s, uint32_t tag);
22
    int (*write_data)(SCSIDevice *s, uint32_t tag);
23
    void (*cancel_io)(SCSIDevice *s, uint32_t tag);
24
    uint8_t *(*get_buf)(SCSIDevice *s, uint32_t tag);
25
};
26

    
27
SCSIDevice *scsi_disk_init(BlockDriverState *bdrv, int tcq,
28
                           scsi_completionfn completion, void *opaque);
29
SCSIDevice *scsi_generic_init(BlockDriverState *bdrv, int tcq,
30
                           scsi_completionfn completion, void *opaque);
31

    
32
/* cdrom.c */
33
int cdrom_read_toc(int nb_sectors, uint8_t *buf, int msf, int start_track);
34
int cdrom_read_toc_raw(int nb_sectors, uint8_t *buf, int msf, int session_num);
35

    
36
#endif