#ifndef _SYS_SCSIIO_H_
#define _SYS_SCSIIO_H_
#include <sys/types.h>
#include <sys/ioctl.h>
#define SENSEBUFLEN 48
#define CMDBUFLEN 16
typedef struct scsireq {
u_long flags;
u_long timeout;
u_char cmd[CMDBUFLEN];
u_char cmdlen;
caddr_t databuf;
u_long datalen;
u_long datalen_used;
u_char sense[SENSEBUFLEN];
u_char senselen;
u_char senselen_used;
u_char status;
u_char retsts;
int error;
} scsireq_t;
#define SCCMD_READ 0x00000001
#define SCCMD_WRITE 0x00000002
#define SCCMD_IOV 0x00000004
#define SCCMD_ESCAPE 0x00000010
#define SCCMD_TARGET 0x00000020
#define SCCMD_OK 0x00
#define SCCMD_TIMEOUT 0x01
#define SCCMD_BUSY 0x02
#define SCCMD_SENSE 0x03
#define SCCMD_UNKNOWN 0x04
#define SCIOCCOMMAND _IOWR('Q', 1, scsireq_t)
#define SC_DB_CMDS 0x00000001
#define SC_DB_FLOW 0x00000002
#define SC_DB_FLOW2 0x00000004
#define SC_DB_DMA 0x00000008
#define SCIOCDEBUG _IOW('Q', 2, int)
struct scsi_addr {
int type;
#define TYPE_SCSI 0
#define TYPE_ATAPI 1
int scbus;
int target;
int lun;
};
#define SCIOCRESET _IO('Q', 7)
#define SCIOCIDENTIFY _IOR('Q', 9, struct scsi_addr)
struct sbioc_device {
void *sd_cookie;
int sd_target;
int sd_lun;
};
#define SBIOCPROBE _IOWR('Q', 127, struct sbioc_device)
#define SBIOCDETACH _IOWR('Q', 128, struct sbioc_device)
#endif