scsiio man page on Inferno

Man page or keyword search:  
man Server   579 pages
apropos Keyword Search (all sections)
Output format
Inferno logo
[printable version]

SCSIIO(2)							     SCSIIO(2)

NAME
       ScsiIO: Scsi - SCSI device operations

SYNOPSIS
       include "scsi.m";

       scsiio := load ScsiIO ScsiIO->PATH;
       Scsi: adt {
	   inquire:    string;
	   rawfd:      ref Sys->FD;
	   nchange:    int;
	   changetime: int;

	   open:       fn(devdir: string): ref Scsi;
	   rawcmd:     fn(s: self ref Scsi, cmd: array of byte,
			  data: array of byte, io: int): int;
	   cmd:	       fn(s: self ref Scsi, cmd: array of byte,
			  data: array of byte, io: int): int;
	   ready:      fn(s: self ref Scsi): int;
       };

       Sread, Swrite, Snone: con iota;

       scsierror:  fn(asc: int, ascq: int): string;

       init:   fn(verbose: int);

DESCRIPTION
       ScsiIO  provides	 a  low-level  interface to a SCSI or ATAPI device via
       sd(3).

       Init must be called before using any other operation of the module.  If
       verbose	is non-zero the module will produce a fair amount of debugging
       output on file descriptor 2 when SCSI commands fail.

       Scsi.open attempts to open the file devdir/raw on  which	 to  send  raw
       SCSI  commands.	 On  success, it reads the device's inquiry string and
       returns a reference to a Scsi value to represent	 the  connection.   It
       provides the following operations:

       s.ready()
	      Sends  the  ``unit  ready'' command up to three times, returning
	      zero once the unit responds that it is ready, or -1 on error.

       s.rawcmd(cmd, data, io)
       s.cmd(cmd, data, io)
	      Both these functions execute a single SCSI command on the	 named
	      device.	The  command  data is in the byte array cmd.  If io is
	      Sread, a successful operation will store the resulting bytes  in
	      data,  up	 to  its length, returning the number of bytes stored.
	      If io is Swrite, the bytes in data are transmitted as  the  data
	      argument	to  the	 command,  and	the number of bytes written is
	      returned.	 If io is Snone, data  is  ignored  and	 may  be  nil.
	      Rawcmd  simply  issues  the  command and returns the result; cmd
	      works a bit harder and is the more commonly  used	 routine.   It
	      attempts	to send the commmand; if it is successful, cmd returns
	      the result.  Otherwise, cmd sends a  request  sense  command  to
	      obtain the reason for the failure, sends a unit ready command in
	      an attempt to bring the unit out of any inconsistent states, and
	      tries  again.  It also accounts for media change.	 If the second
	      try fails, cmd returns  an  error.   On  error,  both  functions
	      return -1 and set the system error string.

       The nchange and changetime elements of Scsi the number of times a media
       change has been detected, and the first	time  the  current  media  was
       detected	 (the  first  time  a  SCSI  command  was  issued after it was
       inserted).  They are maintained by Scsi.cmd.  The initial SCSI  inquiry
       result is kept in inquire.

       Scsierror  returns  a textual description of the SCSI status denoted by
       the ASC and ASCQ sense codes.  The description is found	by  consulting
       /lib/scsicodes.

FILES
       /lib/scsicodes
	      List of textual messages corresponding to SCSI error codes; con‐
	      sulted by scsierror.

SOURCE
       /appl/lib/scsiio.b

SEE ALSO
       disks(2), sd(3)

								     SCSIIO(2)
[top]

List of man pages available for Inferno

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net