参照元

説明

参考

実装

struct scsi_cmnd {
        struct scsi_device *device;
        struct list_head list;  /* scsi_cmnd participates in queue lists */
        struct list_head eh_entry; /* entry for the host eh_cmd_q */
        int eh_eflags;          /* Used by error handlr */
        /*
         * A SCSI Command is assigned a nonzero serial_number before passed
         * to the driver's queue command function.  The serial_number is
         * cleared when scsi_done is entered indicating that the command
         * has been completed.  It is a bug for LLDDs to use this number
         * for purposes other than printk (and even that is only useful
         * for debugging).
         */
        unsigned long serial_number;

        /*
         * This is set to jiffies as it was when the command was first
         * allocated.  It is used to time how long the command has
         * been outstanding
         */
        unsigned long jiffies_at_alloc;

        int retries;
        int allowed;
        int timeout_per_command;

        unsigned char cmd_len;
        enum dma_data_direction sc_data_direction;
        /* These elements define the operation we are about to perform */
#define MAX_COMMAND_SIZE        16
        unsigned char cmnd[MAX_COMMAND_SIZE];

        struct timer_list eh_timeout;   /* Used to time out the command. */
        /* These elements define the operation we ultimately want to perform */
        struct scsi_data_buffer sdb;
        unsigned underflow;     /* Return error if less than
                                   this amount is transferred */

        unsigned transfersize;  /* How much we are guaranteed to
                                   transfer with each SCSI transfer
                                   (ie, between disconnect /
                                   reconnects.   Probably == sector
                                   size */

        struct request *request;        /* The command we are
                                           working on */
#define SCSI_SENSE_BUFFERSIZE   96
        unsigned char *sense_buffer;
                                /* obtained by REQUEST SENSE when
                                 * CHECK CONDITION is received on original
                                 * command (auto-sense) */

        /* Low-level done function - can be used by low-level driver to point
         *        to completion function.  Not used by mid/upper level code. */
        void (*scsi_done) (struct scsi_cmnd *);

        /*
         * The following fields can be written to by the host specific code.
         * Everything else should be left alone.
         */
        struct scsi_pointer SCp;        /* Scratchpad used by some host adapters */
        unsigned char *host_scribble;   /* The host adapter is allowed to
                                         * call scsi_malloc and get some memory
                                         * and hang it here.  The host adapter
                                         * is also expected to call scsi_free
                                         * to release this memory.  (The memory
                                         * obtained by scsi_malloc is guaranteed
                                         * to be at an address < 16Mb). */

        int result;             /* Status code from lower level driver */

        unsigned char tag;      /* SCSI-II queued command tag */
};

コメント



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS