home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / src / linux-headers-2.6.17-6 / include / scsi / scsi_request.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-08-11  |  1.9 KB  |  55 lines

  1. #ifndef _SCSI_SCSI_REQUEST_H
  2. #define _SCSI_SCSI_REQUEST_H
  3.  
  4. #include <scsi/scsi_cmnd.h>
  5.  
  6. struct request;
  7. struct scsi_cmnd;
  8. struct scsi_device;
  9. struct Scsi_Host;
  10.  
  11.  
  12. /*
  13.  * This is essentially a slimmed down version of Scsi_Cmnd.  The point of
  14.  * having this is that requests that are injected into the queue as result
  15.  * of things like ioctls and character devices shouldn't be using a
  16.  * Scsi_Cmnd until such a time that the command is actually at the head
  17.  * of the queue and being sent to the driver.
  18.  */
  19. struct scsi_request {
  20.     int     sr_magic;
  21.     int     sr_result;    /* Status code from lower level driver */
  22.     unsigned char sr_sense_buffer[SCSI_SENSE_BUFFERSIZE];        /* obtained by REQUEST SENSE
  23.                          * when CHECK CONDITION is
  24.                          * received on original command 
  25.                          * (auto-sense) */
  26.  
  27.     struct Scsi_Host *sr_host;
  28.     struct scsi_device *sr_device;
  29.     struct scsi_cmnd *sr_command;
  30.     struct request *sr_request;    /* A copy of the command we are
  31.                    working on */
  32.     unsigned sr_bufflen;    /* Size of data buffer */
  33.     void *sr_buffer;        /* Data buffer */
  34.     int sr_allowed;
  35.     enum dma_data_direction sr_data_direction;
  36.     unsigned char sr_cmd_len;
  37.     unsigned char sr_cmnd[MAX_COMMAND_SIZE];
  38.     void (*sr_done) (struct scsi_cmnd *);    /* Mid-level done function */
  39.     int sr_timeout_per_command;
  40.     unsigned short sr_use_sg;    /* Number of pieces of scatter-gather */
  41.     unsigned short sr_sglist_len;    /* size of malloc'd scatter-gather list */
  42.     unsigned sr_underflow;    /* Return error if less than
  43.                    this amount is transferred */
  44.      void *upper_private_data;    /* reserved for owner (usually upper
  45.                         level driver) of this request */
  46. };
  47.  
  48. extern struct scsi_request *scsi_allocate_request(struct scsi_device *, gfp_t);
  49. extern void scsi_release_request(struct scsi_request *);
  50. extern void scsi_do_req(struct scsi_request *, const void *cmnd,
  51.             void *buffer, unsigned bufflen,
  52.             void (*done) (struct scsi_cmnd *),
  53.             int timeout, int retries);
  54. #endif /* _SCSI_SCSI_REQUEST_H */
  55.