Annotation of researchv10dc/man/man4/scsi.4, revision 1.1.1.1

1.1       root        1: .TH SCSI 4
                      2: .CT 2 sa
                      3: .SH NAME
                      4: scsi \- SCSI interface
                      5: .SH SYNOPSIS
                      6: .B "#include <scsi.h>"
                      7: .SH DESCRIPTION
                      8: The special file
                      9: .F /dev/scsi
                     10: provides a low level interface to a SCSI bus.
                     11: Commands are transmitted to the bus by
                     12: .IR write ;
                     13: the response to each command is received with
                     14: .IR read (2).
                     15: The format of a command is
                     16: .IP
                     17: .EX
                     18: .ta \w'unsigned char scsistatus;  'u
                     19: unsigned long tran_id; /* transaction id */
                     20: unsigned char target;  /* SCSI id of target device */
                     21: unsigned char flags;   /* flags for this transaction */
                     22: unsigned long nreturn; /* number of bytes to be read back */
                     23: char cmd[10];  /* SCSI command */
                     24: char data[];   /* optional data */
                     25: .EE
                     26: .LP
                     27: Thus, to send 
                     28: .I n
                     29: bytes of data, the byte count for
                     30: .I write
                     31: should be
                     32: .IR n +20.
                     33: Possible flags are
                     34: .B SCSI_WR
                     35: (data goes from host to SCSI),
                     36: .B SCSI_RD
                     37: (data goes from SCSI to host),
                     38: .B SCSI_BRESET
                     39: (reset the SCSI bus),
                     40: .B SCSI_RESET
                     41: (reset the controller),
                     42: and
                     43: .B SCSI_SENSE
                     44: (return extended sense data on error).
                     45: For most controllers, 
                     46: .B SCSI_BRESET
                     47: implies
                     48: .BR SCSI_RESET .
                     49: Flags are OR'ed together, and there must be exactly one of
                     50: .B SCSI_WR
                     51: and
                     52: .BR SCSI_RD .
                     53: The SCSI command should terminate within a small time
                     54: (currently 10 seconds);
                     55: a longer limit (300 seconds) can be specified by using
                     56: .BR SCSI_LTMOUT .
                     57: .LP
                     58: The data read is structured as
                     59: .IP
                     60: .EX
                     61: unsigned long tran_id; /* transaction id */
                     62: unsigned char status;  /* scsi status byte */
                     63: unsigned char message; /* scsi message byte */
                     64: unsigned char flags;   /* flags for this transaction */
                     65: unsigned char c_type;  /* 1=td 2=us */
                     66: unsigned short c_reg1; /* td=sa, us=csr */
                     67: unsigned short c_reg2; /* td=mscp, us=per */
                     68: unsigned char sense[22];       /* extended sense data */
                     69: char pad[2];
                     70: char data[];   /* any data */
                     71: .EE
                     72: .LP
                     73: Thus, to read 
                     74: .I n
                     75: bytes of data. the byte count to
                     76: .I read
                     77: should be
                     78: .IR n +36.
                     79: If
                     80: .I flags
                     81: has the
                     82: .B SCSI_CERR
                     83: bit set,
                     84: there was a controller error, which is described by the
                     85: .B c_
                     86: fields.
                     87: The values of
                     88: .B csr
                     89: (or
                     90: .BR sa )
                     91: and
                     92: .B per
                     93: (or
                     94: .BR mscp )
                     95: are documented in the interface manual for the U.S. Design 1158
                     96: Unibus controller (or T.D. Systems Viking controller).
                     97: If the
                     98: .B SCSI_SENSE
                     99: bit was set in the 
                    100: .I write,
                    101: and the status byte shows a check condition,
                    102: an attempt is made to get extended sense information.
                    103: If the attempt succeeds the
                    104: .B SCSI_SENSE
                    105: is set in
                    106: .I flags.
                    107: Otherwise, the status and message bytes for the failed
                    108: attempt are placed in
                    109: .B sense[0]
                    110: and
                    111: .B sense[1]
                    112: respectively.
                    113: .PP
                    114: The transaction id identifies which
                    115: .I write
                    116: caused the results for this
                    117: .IR read .
                    118: This will become more important when multiple simultaneous transactions
                    119: are allowed.
                    120: .SH FILES
                    121: .F /dev/scsi
                    122: .SH "SEE ALSO"
                    123: .IR scsish (8)

unix.superglobalmegacorp.com

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