SD.4
资源名称:os_source.zip [点击查看]
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:6k
源码类别:
操作系统开发
开发平台:
C/C++
- .TH SD 4
- .SH NAME
- sd, st, sg - SCSI hard disk / tape / generic
- .SH DESCRIPTION
- The
- .BR sd* ,
- .BR st* ,
- .B sg*
- family of devices refer to the SCSI hard disk, tape and generic driver using
- the Adaptec 154x series of controllers. This manual page only describes the
- differences between the sd and hd devices, read
- .BR hd (4)
- first.
- .PP
- The devices numbers of the SCSI devices are statically mapped onto the SCSI
- targets 0 to 7. This is done like the hd devices with
- .B sd[0-4]
- referring to target 0,
- .B sd[5-9]
- to target 1, etc. The logical unit number is always 0, because devices with
- more than one logical unit are virtually extinct. The mapping may be changed
- from the boot environment however (see
- .BR boot (8)).
- .PP
- Tapes start at minor device 64, with
- .B nrst0
- at minor 64,
- .B rst0
- at 65,
- .B nrst1
- at 66, etc. The mapping is again static to target (minor - 64) / 2. The
- .B rst
- devices rewind the tape on close, the
- .B nrst
- devices do not. See
- .BR mt (1),
- and
- .BR mtio (4)
- for a description of the commands that may be sent to the tape, either from
- the command prompt or from a program.
- .PP
- Through the eight raw generic devices
- .B rsg[0-7]
- starting at minor 120, one can send SCSI commands to any SCSI device
- from user mode. (Minix-vmd only.)
- .PP
- The driver returns a drive geometry of 64 heads by 32 sectors per track for
- small disks with the DIOCGETP ioctl. For large disks 255x63 is returned.
- The size in sectors is usually larger than
- the largest cylinder number indicates, because the disk is not likely to
- exactly match that faked geometry. Note that DOS may not be able to access
- those last few sectors.
- .SS Disk like devices.
- Removable disks (floppies), CD-ROM's and WORM disks may also be accessed
- through the
- .B sd
- devices. One is not allowed to write a WORM disk however, because it is
- likely to be taken from an alien operating system, so it seems safer to not
- allow Minix to stomp over it. One usually needs special O.S. support to
- keep one from writing to the same block twice.
- .PP
- The
- .B DIOCEJECT
- ioctl ejects CD-ROMs, floppies, etc. (See
- .BR eject (1).)
- A fixed disk spins down if it supports the stop command.
- .SS SCSI Tapes
- There are two types of SCSI tapes drives supported by the driver: fixed or
- variable block size tape drives. Examples of the first kind are cartridge
- tapes, with a fixed 512 bytes block size. An Exabyte tape drive has a
- variable block size, with a minimum of 1 byte and a maximum of 245760 bytes
- (see the documentation of such devices.)
- The maximum is truncated to 32767 bytes for Minix-86 and 61440 bytes for
- Minix-vmd, because the driver can't move more bytes in a single request.
- .PP
- A read or write to a fixed block size tape must be a precise multiple of the
- block size, any other count gives results in an I/O error. A read from a
- variable block sized tape must be large enough to accept the block that is
- read, otherwise an I/O error will be returned. A write can be any size
- above the minimum, creating a block of that size. If the write count is
- larger than the maximum block size then more blocks are written until the
- count becomes zero. The last block must be larger than the minimum of
- course. (This minimum is often as small as 1 byte, as for the Exabyte.)
- .PP
- The
- .B mt blksize
- command may be used to select a fixed block size for a variable block sized
- tape. This will speed up I/O considerably for small block sizes. (Some
- systems can only use fixed mode and will write an Exabyte tape with 1024
- byte blocks, which read very slow in variable mode.)
- .PP
- A tape is a sequence of blocks and filemarks. A tape may be opened and
- blocks may be read from it upto a filemark, after that all further reads
- return 0. After the tape is closed and reopened one can read the blocks
- following the filemark if using a non-rewinding device. This makes the tape
- look like a sequence of files.
- .PP
- If a tape has been written to or opened in write-only mode, then a filemark
- is written if the tape is closed or if a space command is issued. No extra
- filemark is written if the drive is instructed to write filemarks.
- .SS Raw Generic Devices
- Under Minix-vmd one can use the generic SCSI devices to program a SCSI
- device entirely from user mode. The disk and tape devices probe for devices
- when opened, start disks and load tapes, but the generic devices do nothing
- of this. Given an open file descriptor to any SCSI character device (not
- just the generic devices) one can use the following ioctl:
- .PP
- .RS
- ioctl(fd, SCIOCCMD, &scsicmd)
- .RE
- .PP
- The structure whose address is passed as the third argument is defined
- in <sys/scsi.h> as follows:
- .PP
- .RS
- .nf
- struct scsicmd {
- void *cmd;
- size_t cmdlen;
- void *buf;
- size_t buflen;
- void *sense;
- size_t senselen;
- int dir;
- };
- .fi
- .RE
- .PP
- .B Cmd
- and
- .B cmdlen
- hold the address and length of an object holding a Group 0 or Group 1
- SCSI command. The next two fields describe a buffer of at most 8 kilobytes
- used in the data in or out phase.
- .B Dir
- is 0 if data is to be read from the device, 1 if data is written to the
- device. If the ioctl succeeds then 0 is returned, otherwise -1 with
- .B errno
- set to
- .B EIO
- and the request sense info returned in the buffer described by the sense and
- senselen fields. If the sense key is zero on error then a host adapter
- error occurred, this means that the device is most likely turned off or not
- present.
- .SH FILES
- .TP 40
- /dev/sd[0-9], /dev/sd[1-46-9][a-d]
- Usual disk devices.
- .TP
- /dev/rst4, /dev/nrst4
- Usual tape device.
- .TP
- /dev/rsg[0-7]
- Raw generic devices.
- .SH "SEE ALSO"
- .BR hd (4),
- .BR mt (1),
- .BR eject (1),
- .BR mtio (4),
- .BR dd (1).
- .SH AUTHOR
- Kees J. Bot (kjb@cs.vu.nl)