The Linux 2.4 SCSI subsystem HOWTO
Prev | Appendix E. Compile options and System calls including ioctls | Next

# E.5. sg driver

The following header files in the kernel source are relevant to the sg driver:

            /usr/src/linux/include/scsi/sg.h

As pointed out in Section E.1 this is best included in applications by using:

        #include <linux/../scsi/sg.h>

## E.5.1. sg compile options

Here are some defines from the sg.h file that the user could conceivably want to change. The current default values are shown in braces on the right:

    SG_SCATTER_SZ           {32768}
    SG_DEF_RESERVED_SIZE    {SG_SCATTER_SZ}
    SG_DEF_FORCE_LOW_DMA    {0}
    SG_DEF_FORCE_PACK_ID    {0}
    SG_DEF_KEP_ORPHAN       {0}
    SG_MAX_QUEUE            {16}
    SG_DEFAULT_RETRIES      {1}  # i.e. don't retry
    SG_BIG_BUFF             {SG_DEF_RESERVED_SIZE}
    SG_DEFAULT_TIMEOUT      {60 seconds}
    SG_DEF_COMMAND_Q        {0 *}
    SG_DEF_UNDERRUN_FLAG    {0}

    * The per file descriptor copy of this flips to 1 (thus
      allowing command queuing) as soon as a write() based
      on the newer sg_io_hdr structure is detected.

## E.5.2. sg ioctls and user interface

The following ioctl()s are listed in alphabetical order with a brief explanation to the right. [See sg documentation for more details.]

    SG_EMULATED_HOST     [indicate if adapter is ide-scsi]
    SG_GET_COMMAND_Q     [command queuing flag state]
    SG_GET_KEEP_ORPHAN   [interrupted SG_IO keep orphan flag state]
    SG_GET_LOW_DMA       ["low dma flag" (<= 16 MB on i386) state]
    SG_GET_NUM_WAITING   [number of responses waiting to be read()]
    SG_GET_PACK_ID       [pack_id of next to read() response
                          (-1 if none)]
    SG_GET_REQUEST_TABLE [yields array of requests being processed]
    SG_GET_RESERVED_SIZE [current size of reserved buffer]
    SG_GET_SCSI_ID       [a little more info than the mid level's
                          SCSI_IOCTL_GET_IDLUN ioctl]
    SG_GET_SG_TABLESIZE  [max entries in host's scatter gather table]
    SG_GET_TIMEOUT       [yields timeout (unit: jiffies
                          (10ms on i386))]
    SG_GET_TRANSFORM     [state of ide-scsi's transform flag]
    SG_IO                [send given SCSI command and wait for
                          response]
    SG_NEXT_CMD_LEN      [change command length of next command]
    SG_SCSI_RESET        [send a SCSI bus, device or host reset]
    SG_SET_COMMAND_Q     [set command queuing state {old=0, new=1}]
    SG_SET_DEBUG         [set debug level {0}]
    SG_SET_KEEP_ORPHAN   [set SG_IO's keep orphan flag {0}]
    SG_SET_FORCE_LOW_DMA [force DMA buffer low (<= 16 MB on i386)
                          {0}]
    SG_SET_FORCE_PACK_ID [so read() can fetch by pack_id {0}]
    SG_SET_RESERVED_SIZE [change default buffer size
                          {SG_DEF_RESERVED_SIZE}]
    SG_SET_TIMEOUT       [change current timeout {60 secs} ]
    SG_SET_TRANSFORM     [set ide-scsi's ATAPI transform flag {0}]

    open()    [recognized oflags: O_RDONLY, O_RDWR, O_EXCL,
               O_NONBLOCK]
    close()
    read()
    write()
    ioctl()
    poll()    [used when in O_NONBLOCK mode]
    fasync()  [enables generation of SIGIO signal for read()]

Prev | Home | Next
st driver | Up | References, Credits and Corrections