Annotation of linux/kernel/blk_drv/scsi/scsi.h, revision 1.1

1.1     ! root        1: /*
        !             2:  *     scsi.h Copyright (C) 1992 Drew Eckhardt 
        !             3:  *     generic SCSI package header file by
        !             4:  *             Drew Eckhardt 
        !             5:  *
        !             6:  *     <[email protected]>
        !             7:  */
        !             8: 
        !             9: #ifndef _SCSI_H
        !            10:        #define _SCSI_H
        !            11: /*
        !            12:        $Header: /usr/src/linux/kernel/blk_drv/scsi/RCS/scsi.h,v 1.1 1992/04/24 18:01:50 root Exp root $
        !            13: 
        !            14:        For documentation on the OPCODES, MESSAGES, and SENSE values,
        !            15:        please consult the SCSI standard.
        !            16: 
        !            17: */
        !            18: 
        !            19: /*
        !            20:        SCSI opcodes
        !            21: */
        !            22: 
        !            23: #define TEST_UNIT_READY        0x00
        !            24: #define REZERO_UNIT            0x01
        !            25: #define REQUEST_SENSE          0x03
        !            26: #define FORMAT_UNIT            0x04
        !            27: #define REASSIGN_BLOCKS                0x07
        !            28: #define READ_6                 0x08
        !            29: #define WRITE_6                        0x0a
        !            30: #define SEEK_6                 0x0b
        !            31: #define INQUIRY                        0x12
        !            32: #define MODE_SELECT            0x15
        !            33: #define RESERVE                        0x16
        !            34: #define RELEASE                        0x17
        !            35: #define COPY                   0x18
        !            36: #define MODE_SENSE             0x1a
        !            37: #define START_STOP             0x1b
        !            38: #define RECIEVE_DAIGNOSTIC     0x1c
        !            39: #define SEND_DIAGNOSTIC                0x1d
        !            40: #define ALLOW_MEDIUM_REMOVAL   0x1e
        !            41: 
        !            42: #define READ_CAPACITY          0x25
        !            43: #define READ_10                        0x28
        !            44: #define WRITE_10               0x2a
        !            45: #define SEEK_10                        0x2b
        !            46: #define WRITE_VERIFY           0x2e
        !            47: #define VERIFY                 0x2f
        !            48: #define SEARCH_HIGH            0x30
        !            49: #define SEARCH_EQUAL           0x31
        !            50: #define SEARCH_LOW             0x32
        !            51: #define SET_LIMITS             0x33
        !            52: #define COMPARE                        0x39
        !            53: #define COPY_VERIFY            0x3a
        !            54: 
        !            55: #define COMMAND_SIZE(opcode) ((opcode) ? ((opcode) > 0x20 ? 10 : 6) : 0)
        !            56: 
        !            57: /*
        !            58:        MESSAGE CODES
        !            59: */
        !            60: 
        !            61: #define COMMAND_COMPLETE       0x00
        !            62: #define EXTENDED_MESSAGE       0x01
        !            63: #define SAVE_POINTERS          0x02
        !            64: #define RESTORE_POINTERS       0x03
        !            65: #define DISCONNECT             0x04
        !            66: #define INITIATOR_ERROR                0x05
        !            67: #define ABORT                  0x06
        !            68: #define MESSAGE_REJECT         0x07
        !            69: #define NOP                    0x08
        !            70: #define MSG_PARITY_ERROR       0x09
        !            71: #define LINKED_CMD_COMPLETE    0x0a
        !            72: #define LINKED_FLG_CMD_COMPLETE        0x0b
        !            73: #define BUS_DEVICE_RESET       0x0c
        !            74: #define IDENTIFY               0x80
        !            75: /*
        !            76:        Status codes
        !            77: */
        !            78: 
        !            79: #define GOOD                   0x00
        !            80: #define CHECK_CONDITION                0x01
        !            81: #define CONDITION_GOOD         0x02
        !            82: #define BUSY                   0x04
        !            83: #define INTERMEDIATE_GOOD      0x08
        !            84: #define INTERMEDIATE_C_GOOD    0x0a
        !            85: #define RESERVATION_CONFLICT   0x0c
        !            86: 
        !            87: #define STATUS_MASK            0x1e
        !            88:        
        !            89: /*
        !            90:        the return of the status word will be in the following format :
        !            91:        The low byte is the status returned by the SCSI command, 
        !            92:        with vendor specific bits masked.
        !            93: 
        !            94:        The next byte is the message which followed the SCSI status.
        !            95:        This allows a stos to be used, since the Intel is a little
        !            96:        endian machine.
        !            97: 
        !            98:        The final byte is a host return code, which is one of the following.
        !            99: 
        !           100:        IE 
        !           101:        lsb             msb
        !           102:        status  msg     host code       
        !           103: 
        !           104:         Our errors returned by OUR driver, NOT SCSI message.  Orr'd with
        !           105:         SCSI message passed back to driver <IF any>.
        !           106: */
        !           107: 
        !           108: /*     NO error                                                        */
        !           109: #define DID_OK                         0x00
        !           110: /*     Couldn't connect before timeout period                          */
        !           111: #define DID_NO_CONNECT         0x01
        !           112: /*     BUS stayed busy through time out period                         */
        !           113: #define DID_BUS_BUSY           0x02
        !           114: /*     TIMED OUT for other reason                                      */
        !           115: #define DID_TIME_OUT           0x03
        !           116: /*     BAD target.                                                     */
        !           117: #define DID_BAD_TARGET         0x04
        !           118: /*     Told to abort for some other reason                             */
        !           119: #define        DID_ABORT               0x05
        !           120: /*
        !           121:        Parity error
        !           122: */
        !           123: #define DID_PARITY             0x06
        !           124: /*
        !           125:        Internal error
        !           126: */
        !           127: #define DID_ERROR              0x07    
        !           128: /*
        !           129:        Reset by somebody.
        !           130: */
        !           131: #define DID_RESET              0x08
        !           132: 
        !           133: /*
        !           134:        Driver status
        !           135: */ 
        !           136: #define DRIVER_OK              0x00
        !           137: 
        !           138: /*
        !           139:        These indicate the error that occured, and what is available.
        !           140: */
        !           141: 
        !           142: #define DRIVER_BUSY            0x01
        !           143: #define DRIVER_SOFT            0x02
        !           144: #define DRIVER_MEDIA           0x03
        !           145: #define DRIVER_ERROR           0x04    
        !           146: 
        !           147: #define DRIVER_INVALID         0x05
        !           148: #define DRIVER_TIMEOUT         0x06
        !           149: #define DRIVER_HARD            0x07
        !           150: 
        !           151: #define SUGGEST_RETRY          0x08
        !           152: #define SUGGEST_ABORT          0x09 
        !           153: #define SUGGEST_REMAP          0x0a
        !           154: #define SUGGEST_DIE            0x0b
        !           155: 
        !           156: #define DRIVER_SENSE           0x10
        !           157: 
        !           158: #define DRIVER_MASK 0x0f
        !           159: #define SUGGEST_MASK 0xf0
        !           160: 
        !           161: /*
        !           162: 
        !           163:        SENSE KEYS
        !           164: */
        !           165: 
        !           166: #define NO_SENSE               0x00
        !           167: #define RECOVERED_ERROR                0x01
        !           168: #define NOT_READY              0x02
        !           169: #define MEDIUM_ERROR           0x03
        !           170: #define        HARDWARE_ERROR          0x04
        !           171: #define ILLEGAL_REQUEST                0x05
        !           172: #define UNIT_ATTENTION         0x06
        !           173: #define DATA_PROTECT           0x07
        !           174: #define BLANK_CHECK            0x08
        !           175: #define COPY_ABORTED           0x0a
        !           176: #define ABORTED_COMMAND                0x0b
        !           177: #define        VOLUME_OVERFLOW         0x0d
        !           178: #define MISCOMPARE             0x0e
        !           179: 
        !           180: 
        !           181: /*
        !           182:        DEVICE TYPES
        !           183: 
        !           184: */
        !           185: 
        !           186: #define TYPE_DISK      0x00
        !           187: #define TYPE_TAPE      0x01
        !           188: #define TYPE_WORM      0x04    /* Treated as ROM by our system */
        !           189: #define TYPE_ROM       0x05
        !           190: #define TYPE_NO_LUN    0x7f
        !           191: /*
        !           192:        Every SCSI command starts with a one byte OP-code.
        !           193:        The next byte's high three bits are the LUN of the
        !           194:        device.  Any multi-byte quantities are stored high byte
        !           195:        first, and may have a 5 bit MSB in the same byte
        !           196:        as the LUN.
        !           197: */
        !           198: 
        !           199: 
        !           200: /*
        !           201:        The scsi_device struct contains what we know about each given scsi
        !           202:        device.
        !           203: */
        !           204: 
        !           205: typedef struct scsi_device {
        !           206:        unsigned char host_no, id, lun;
        !           207:        unsigned writeable:1;
        !           208:        unsigned removable:1; 
        !           209:        unsigned random:1;
        !           210:        } Scsi_Device;
        !           211: /*
        !           212:        Use these to separate status msg and our bytes
        !           213: */
        !           214: 
        !           215: #define status_byte(result) (((result) >> 1) & 0xf)
        !           216: #define msg_byte(result) (((result) >> 8) & 0xff)
        !           217: #define host_byte(result) (((result) >> 16) & 0xff)
        !           218: #define driver_byte(result) (((result) >> 24) & 0xff)
        !           219: #define sugestion(result) (driver_byte(result) & SUGGEST_MASK)
        !           220: 
        !           221: #define sense_class(sense) (((sense) >> 4) & 0x7)
        !           222: #define sense_error(sense) ((sense) & 0xf)
        !           223: #define sense_valid(sense) ((sense) & 0x80);
        !           224: 
        !           225: /*
        !           226:        These are the SCSI devices available on the system.
        !           227: */
        !           228: 
        !           229: #define MAX_SCSI_DEVICE 2
        !           230: extern int NR_SCSI_DEVICES;
        !           231: extern Scsi_Device scsi_devices[MAX_SCSI_DEVICE];
        !           232: /*
        !           233:        scsi_abort aborts the current command that is executing on host host.
        !           234:        The error code, if non zero is returned in the host byte, otherwise 
        !           235:        DID_ABORT is returned in the hostbyte.
        !           236: */
        !           237: 
        !           238: extern int scsi_abort (int host, int code);
        !           239: 
        !           240: /*
        !           241:        Initializes all SCSI devices.  This scans all scsi busses.
        !           242: */
        !           243: 
        !           244: extern void scsi_dev_init (void);
        !           245: 
        !           246: /*
        !           247:        You guesed it.  This sends a command to the selected SCSI host 
        !           248: */
        !           249: 
        !           250: 
        !           251: 
        !           252: extern void scsi_do_cmd (int host,  unsigned char target, const void *cmnd ,
        !           253:                   void *buffer, unsigned bufflen, void (*done)(int,int),
        !           254:                   int timeout, unsigned  char *sense_buffer, int retries);
        !           255: 
        !           256: int scsi_reset (int host);
        !           257: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.