SD.4
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:7k
源码类别:

操作系统开发

开发平台:

C/C++

  1. SD(4)                     Minix Programmer's Manual                      SD(4)
  2. NAME
  3.      sd, st, sg - SCSI hard disk / tape / generic
  4. DESCRIPTION
  5.      The sd*, st*, sg* family of devices refer to the SCSI hard disk, tape and
  6.      generic driver using the Adaptec 154x series of controllers.  This manual
  7.      page only describes the differences between the sd and hd  devices,  read
  8.      hd(4) first.
  9.      The devices numbers of the SCSI devices are statically  mapped  onto  the
  10.      SCSI  targets  0  to  7.   This  is done like the hd devices with sd[0-4]
  11.      referring to target 0, sd[5-9] to target 1, etc.  The logical unit number
  12.      is  always  0,  because  devices  with  more  than  one  logical unit are
  13.      virtually extinct.  The mapping may be changed from the boot  environment
  14.      however (see boot(8)).
  15.      Tapes start at minor device 64, with nrst0 at minor 64, rst0 at 65, nrst1
  16.      at 66, etc.  The mapping is again static to target (minor - 64) / 2.  The
  17.      rst devices rewind the tape on close,  the  nrst  devices  do  not.   See
  18.      mt(1),  and mtio(4) for a description of the commands that may be sent to
  19.      the tape, either from the command prompt or from a program.
  20.      Through the eight raw generic devices rsg[0-7] starting at minor 120, one
  21.      can  send  SCSI  commands  to any SCSI device from user mode.  (Minix-vmd
  22.      only.)
  23.      The driver returns a drive geometry of 64 heads by 32 sectors  per  track
  24.      for  small  disks  with  the  DIOCGETP  ioctl.  For large disks 255x63 is
  25.      returned.  The size  in  sectors  is  usually  larger  than  the  largest
  26.      cylinder  number  indicates,  because  the  disk is not likely to exactly
  27.      match that faked geometry.  Note that DOS may not be able to access those
  28.      last few sectors.
  29.   Disk like devices.
  30.      Removable disks (floppies), CD-ROM's and WORM disks may also be  accessed
  31.      through the sd devices.  One is not allowed to write a WORM disk however,
  32.      because it is likely to be taken from an alien operating  system,  so  it
  33.      seems  safer  to  not  allow  Minix  to stomp over it.  One usually needs
  34.      special O.S. support to keep one from writing to the same block twice.
  35.      The DIOCEJECT ioctl ejects CD-ROMs, floppies, etc.   (See  eject(1).)   A
  36.      fixed disk spins down if it supports the stop command.
  37.   SCSI Tapes
  38.      There are two types of SCSI tapes drives supported by the  driver:  fixed
  39.      or  variable  block  size  tape  drives.   Examples of the first kind are
  40.      cartridge tapes, with a fixed 512 bytes  block  size.   An  Exabyte  tape
  41.      drive  has  a variable block size, with a minimum of 1 byte and a maximum
  42.      of 245760 bytes (see the documentation of such devices.)  The maximum  is
  43.      truncated  to  32767  bytes  for  Minix-86 and 61440 bytes for Minix-vmd,
  44.                                                                              1
  45. SD(4)                     Minix Programmer's Manual                      SD(4)
  46.      because the driver can't move more bytes in a single request.
  47.      A read or write to a fixed block size tape must be a precise multiple  of
  48.      the  block  size,  any other count gives results in an I/O error.  A read
  49.      from a variable block sized tape must be large enough to accept the block
  50.      that  is  read,  otherwise an I/O error will be returned.  A write can be
  51.      any size above the minimum, creating a block of that size.  If the  write
  52.      count  is larger than the maximum block size then more blocks are written
  53.      until the count becomes zero.  The last block must  be  larger  than  the
  54.      minimum of course.  (This minimum is often as small as 1 byte, as for the
  55.      Exabyte.)
  56.      The mt blksize command may be used to select a fixed  block  size  for  a
  57.      variable block sized tape.  This will speed up I/O considerably for small
  58.      block sizes.  (Some systems can only use fixed mode  and  will  write  an
  59.      Exabyte  tape  with  1024  byte  blocks, which read very slow in variable
  60.      mode.)
  61.      A tape is a sequence of blocks and filemarks.  A tape may be  opened  and
  62.      blocks  may be read from it upto a filemark, after that all further reads
  63.      return 0.  After the tape is closed and reopened one can read the  blocks
  64.      following  the  filemark if using a non-rewinding device.  This makes the
  65.      tape look like a sequence of files.
  66.      If a tape has been written to  or  opened  in  write-only  mode,  then  a
  67.      filemark  is  written  if  the  tape  is  closed or if a space command is
  68.      issued.  No extra filemark is written if the drive is instructed to write
  69.      filemarks.
  70.   Raw Generic Devices
  71.      Under Minix-vmd one can use the generic SCSI devices to  program  a  SCSI
  72.      device  entirely  from  user  mode.   The disk and tape devices probe for
  73.      devices when opened, start disks and load tapes, but the generic  devices
  74.      do  nothing of this.  Given an open file descriptor to any SCSI character
  75.      device (not just the generic devices) one can use the following ioctl:
  76.           ioctl(fd, SCIOCCMD, &scsicmd)
  77.      The structure whose address is passed as the third argument is defined in
  78.      <sys/scsi.h> as follows:
  79.           struct scsicmd {
  80.                   void    *cmd;
  81.                   size_t  cmdlen;
  82.                   void    *buf;
  83.                   size_t  buflen;
  84.                   void    *sense;
  85.                   size_t  senselen;
  86.                   int     dir;
  87.           };
  88.                                                                              2
  89. SD(4)                     Minix Programmer's Manual                      SD(4)
  90.      Cmd and cmdlen hold the address and length of an object holding a Group 0
  91.      or  Group  1  SCSI  command.  The next two fields describe a buffer of at
  92.      most 8 kilobytes used in the data in or out phase.  Dir is 0 if  data  is
  93.      to  be  read from the device, 1 if data is written to the device.  If the
  94.      ioctl succeeds then 0 is returned, otherwise -1 with errno set to EIO and
  95.      the  request sense info returned in the buffer described by the sense and
  96.      senselen fields.  If the sense key is zero on error then a  host  adapter
  97.      error  occurred,  this means that the device is most likely turned off or
  98.      not present.
  99. FILES
  100.      /dev/sd[0-9], /dev/sd[1-46-9][a-d]      Usual disk devices.
  101.      /dev/rst4, /dev/nrst4                   Usual tape device.
  102.      /dev/rsg[0-7]                           Raw generic devices.
  103. SEE ALSO
  104.      hd(4), mt(1), eject(1), mtio(4), dd(1).
  105. AUTHOR
  106.      Kees J. Bot (kjb@cs.vu.nl)
  107.                                                                              3