Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at v2.6.16-rc3 54 lines 2.0 kB view raw
1#ifndef _SCSI_SCSI_REQUEST_H 2#define _SCSI_SCSI_REQUEST_H 3 4#include <scsi/scsi_cmnd.h> 5 6struct request; 7struct scsi_cmnd; 8struct scsi_device; 9struct 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 */ 19struct 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 48extern struct scsi_request *scsi_allocate_request(struct scsi_device *, gfp_t); 49extern void scsi_release_request(struct scsi_request *); 50extern 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 */