MyWebUniversity.com Home Page
 



OpenSolaris man pages main menu


Ioctl Requests                                          uscsi(7I)



NAME
     uscsi - user SCSI command interface

SYNOPSIS
     #include 

     ioctl(int fildes, int request, struct uscsicmd *cmd);


DESCRIPTION
     The uscsi command is very powerful and  somewhat  dangerous;
     therefore  it has some permission restrictions. See WARNINGS
     for more details.


     Drivers supporting this ioctl(2) provide a general interface
     allowing  user-level  applications  to cause individual SCSI
     commands to be directed to a particular SCSI or ATAPI device
     under control of that driver. The uscsi command is supported
     by the sd driver for SCSI disks and ATAPI CD-ROM drives, and
     by  the  st  driver  for SCSI tape drives. uscsi may also be
     supported by other device drivers; see the  specific  device
     driver manual page for complete information.


     Applications must not assume that all  Solaris  disk  device
     drivers  support  the  uscsi ioctl command. The SCSI command
     may include a data transfer  to  or  from  that  device,  if
     appropriate  for  that  command. Upon completion of the com-
     mand, the user application can determine how many bytes were
     transferred  and  the  status  returned by the device. Also,
     optionally, if the command returns a Check Condition status,
     the  driver will automatically issue a Request Sense command
     and return the sense data along with  the  original  status.
     See  the  USCSIRQENABLE  flag  below for this Request Sense
     processing.  The   uscsicmd   structure   is   defined   in
      and includes the following members:

       int uscsiflags;               /* read, write, etc. see below */
       short uscsistatus;           /* resulting status */
       short uscsitimeout;          /* Command Timeout */
       caddrt uscsicdb             /* CDB to send to target */
       caddrt uscsibufaddr;        /* i/o source/destination */
       sizet uscsibuflen;          /* size of i/o to take place*/
       sizet uscsiresid;           /* resid from i/o operation */
       uchart uscsicdblen;         /* # of valid CDB bytes */
       uchart uscsirqlen;          /* size of uscsirqbuf */
       uchart uscsirqstatus;       /* status of request sense cmd */
       uchart uscsirqresid;        /* resid of request sense cmd */
       caddrt uscsirqbuf;          /* request sense buffer */
       void *uscsireserved5;       /* Reserved for future use */




SunOS 5.11          Last change: 29 May 2007                    1






Ioctl Requests                                          uscsi(7I)



     The fields of the uscsicmd  structure  have  the  following
     meanings:

     uscsiflags         The I/O direction and other  details  of
                         how  to carry out the SCSI command. Pos-
                         sible values are described below.


     uscsistatus        The SCSI status  byte  returned  by  the
                         device is returned in this field.


     uscsitimeout       Time in seconds to allow for  completion
                         of the command.


     uscsicdb           A  pointer  to  the  SCSI  CDB  (command
                         descriptor  block)  to be transferred to
                         the device in command phase.


     uscsibufaddr       The user buffer containing the  data  to
                         be read from or written to the device.


     uscsibuflen        The length of uscsibufaddr.


     uscsiresid         If a data  transfer  terminates  without
                         transferring    the   entire   requested
                         amount, the remainder,  or  residue,  is
                         returned in this field.


     uscsicdblen        The  length  of  the  SCSI  CDB  to   be
                         transferred  to  the  device  in command
                         phase.


     uscsirqlen         The   length   of    uscsirqbuf,    the
                         application's Request Sense buffer.


     uscsirqstatus      The SCSI status byte  returned  for  the
                         Request Sense command executed automati-
                         cally by the driver  in  response  to  a
                         Check Condition status return.


     uscsirqresid       The  residue,  or   untransferred   data
                         length,   of   the  Request  Sense  data
                         transfer (the number of bytes, less than



SunOS 5.11          Last change: 29 May 2007                    2






Ioctl Requests                                          uscsi(7I)



                         or  equal to uscsirqlen, which were not
                         filled with sense data).


     uscsirqbuf         Points  to  a  buffer   in   application
                         address space to which the results of an
                         automatic  Request  Sense  command   are
                         written.


     uscsireserved5    Reserved for future use.



     The uscsiflags field defines the following:

       USCSIWRITE                   /* send data to device */
       USCSISILENT                  /* no error messages */
       USCSIDIAGNOSE                /* fail if any error occurs */
       USCSISOLATE                 /* isolate from normal commands */
       USCSIREAD                    /* get data from device */
       USCSIASYNC                   /* set bus to asynchronous mode */
       USCSISYNC                    /* return bus to sync mode if possible */
       USCSIRESET                   /* reset target */
       USCSIRESETARGET            /* reset target */
       USCSIRESETLUN               /* reset logical unit */
       USCSIRESETAL               /* reset all targets */
       USCSIRQENABLE                /* enable request sense extensions */
       USCSIRENEGOT                 /* renegotiate wide/sync on next I/O */



     The uscsiflags bits have the following interpretation:

     USCSIWRITE           Data will be written from the  initia-
                           tor to the target.


     USCSISILENT          The driver should not print  any  con-
                           sole   error   messages   or  warnings
                           regarding  failures  associated   with
                           this SCSI command.


     USCSIDIAGNOSE        The  driver  should  not  attempt  any
                           retries  or  other recovery mechanisms
                           if this SCSI command terminates abnor-
                           mally in any way.


     USCSISOLATE         This SCSI command should not  be  exe-
                           cuted with other commands.



SunOS 5.11          Last change: 29 May 2007                    3






Ioctl Requests                                          uscsi(7I)



     USCSIREAD            Data will be read from the  target  to
                           the initiator.


     USCSIASYNC           Set the SCSI bus to asynchronous  mode
                           before running this command.


     USCSISYNC            Set the SCSI bus to  synchronous  mode
                           before running this command.


     USCSIRESET           Send a SCSI bus device  reset  message
                           to this target.


     USCSIRESETARGET    Same as USCSIRESET. Use this flag  to
                           request  TARGET RESET. (USCSIRESET is
                           maintained only for compatibility with
                           old applications).


     USCSIRESETLUN       Send a SCSI logical unit reset message
                           to this target.


     USCSIRESETAL       USCSIRESETAL,
                           USCSIRESET/USCSIRESETARGET     and
                           USCSIRESETLUN are mutually exclusive
                           options and issuing them in any simul-
                           taneous  combination  will  result  in
                           implementation-dependent behavior

                           When a USCSI reset request is combined
                           with  other SCSI commands, the follow-
                           ing semantics take effect:

                           If the USCSI RESET flag is  specified,
                           the    other    fields   (other   than
                           uscsiflags)  in  the  uscsicmd   are
                           ignored.  The uscsicdblen must be set
                           to zero.


     USCSIRQENABLE        Enable Request  Sense  extensions.  If
                           the  user  application  is prepared to
                           receive sense data, this bit  must  be
                           set,   the   fields   uscsirqbuf  and
                           uscsirqbuflen must be  non-zero,  and
                           the  uscsirqbuf  must point to memory
                           writable by the application.




SunOS 5.11          Last change: 29 May 2007                    4






Ioctl Requests                                          uscsi(7I)



     USCSIRENEGOT         Tells USCSI to renegotiate  wide  mode
                           and  synchronous transfer speed before
                           the transmitted SCSI command  is  exe-
                           cuted.  This flag in effects tells the
                           target    driver    to    pass     the
                           FLAGRENEGOTIATEWIDESYNC flag in the
                           SCSI packet before passing the command
                           to an adapter driver for transport.

                           See     the     scsipkt(9S)      flag
                           FLAGRENEGOTIATEWIDESYNC   for  more
                           information.


IOCTLS
     The ioctl supported by drivers providing the uscsi interface
     is:

     USCSICMD    The argument is a pointer to a uscsicmd  struc-
                 ture.  The  SCSI device addressed by that driver
                 is  selected,  and  given   the   SCSI   command
                 addressed by uscsicdb. If this command requires
                 a data phase, the uscsibuflen and uscsibufaddr
                 fields  must be set appropriately; if data phase
                 occurs,  the  uscsiresid  is  returned  as  the
                 number  of  bytes not transferred. The status of
                 the command,  as  returned  by  the  device,  is
                 returned  in the uscsistatus field. If the com-
                 mand terminates with Check Condition status, and
                 Request  Sense is enabled, the sense data itself
                 is returned in  uscsirqbuf.  The  uscsirqresid
                 provides  the  residue of the Request Sense data
                 transfer.


ERORS
     EINVAL    A parameter  has  an  incorrect,  or  unsupported,
               value.


     EIO       An error occurred during the execution of the com-
               mand.


     EPERM     A process without root credentials tried  to  exe-
               cute the USCSICMD ioctl.


     EFAULT    The   uscsicmd   itself,   the   uscsicdb,   the
               uscsibuf,  or the uscsirqbuf point to an invalid
               address.




SunOS 5.11          Last change: 29 May 2007                    5






Ioctl Requests                                          uscsi(7I)



ATRIBUTES
     See attributes(5) for descriptions of the  following  attri-
     butes:



     
           ATRIBUTE TYPE               ATRIBUTE VALUE       
    
     Availability                 SUNWhea                     
    
     Interface Stability          Committed                   
    


SEE ALSO
     ioctl(2), attributes(5), sd(7D), st(7D)


     ANSI Small Computer System Interface-2 (SCSI-2)

WARNINGS
     The uscsi command is very powerful, but somewhat  dangerous,
     and  so  its use is restricted to processes running as root,
     regardless of the file permissions on the device  node.  The
     device  driver  code  expects  to  own the device state, and
     uscsi commands can change the state of the device  and  con-
     fuse  the  device  driver.  It is best to use uscsi commands
     only with no side effects, and avoid commands such  as  Mode
     Select, as they may cause damage to data stored on the drive
     or system panics. Also, as the commands are not  checked  in
     any  way by the device driver, any block may be overwritten,
     and the block numbers are  absolute  block  numbers  on  the
     drive  regardless  of which slice number is used to send the
     command.


     The uscsi interface is not recommended for very  large  data
     transfers  (typically  more  than  16MB).  If  the requested
     transfer size exceeds the maximum transfer size of  the  DMA
     engine, it will not be broken up into multiple transfers and
     DMA errors may result.


     The USCSICMD ioctl associates a struct uscsicmd with a dev-
     ice  by  using  an open file descriptor to the device. Other
     APIs might provide the  same  struct  uscsicmd  programming
     interface,  but  perform  device  association  in some other
     manner.






SunOS 5.11          Last change: 29 May 2007                    6



OpenSolaris man pages main menu

Contact us      |       About us      |       Term of use      |       Copyright © 2000-2010 MyWebUniversity.com ™