*参照元 [#zc356025]
#backlinks

*説明 [#bd35b1d6]
-パス: [[linux-2.6.25/include/linux/blkdev.h]]

-FIXME: これは何?
--説明


**参考 [#y70081a1]


*実装 [#w5868ea8]
 struct request_queue
 {
         /*
          * Together with queue_head for cacheline sharing
          */
         struct list_head        queue_head;
         struct request          *last_merge;
         elevator_t              *elevator;
 
         /*
          * the queue request freelist, one for reads and one for writes
          */
         struct request_list     rq;
 
         request_fn_proc         *request_fn;
         make_request_fn         *make_request_fn;
         prep_rq_fn              *prep_rq_fn;
         unplug_fn               *unplug_fn;
         merge_bvec_fn           *merge_bvec_fn;
         prepare_flush_fn        *prepare_flush_fn;
         softirq_done_fn         *softirq_done_fn;
         dma_drain_needed_fn     *dma_drain_needed;
 
         /*
          * Dispatch queue sorting
          */
         sector_t                end_sector;
         struct request          *boundary_rq;
 
         /*
          * Auto-unplugging state
          */
         struct timer_list       unplug_timer;
         int                     unplug_thresh;  /* After this many requests */
         unsigned long           unplug_delay;   /* After this many jiffies */
         struct work_struct      unplug_work;
 
         struct backing_dev_info backing_dev_info;
 
         /*
          * The queue owner gets to use this for whatever they like.
          * ll_rw_blk doesn't touch it.
          */
         void                    *queuedata;
 
         /*
          * queue needs bounce pages for pages above this limit
          */
         unsigned long           bounce_pfn;
         gfp_t                   bounce_gfp;
 
         /*
          * various queue flags, see QUEUE_* below
          */
         unsigned long           queue_flags;
 
         /*
          * protects queue structures from reentrancy. ->__queue_lock should
          * _never_ be used directly, it is queue private. always use
          * ->queue_lock.
          */
         spinlock_t              __queue_lock;
         spinlock_t              *queue_lock;
 
         /*
          * queue kobject
          */
         struct kobject kobj;
 
         /*
          * queue settings
          */
         unsigned long           nr_requests;    /* Max # of requests */
         unsigned int            nr_congestion_on;
         unsigned int            nr_congestion_off;
         unsigned int            nr_batching;
 
         unsigned int            max_sectors;
         unsigned int            max_hw_sectors;
         unsigned short          max_phys_segments;
         unsigned short          max_hw_segments;
         unsigned short          hardsect_size;
         unsigned int            max_segment_size;
 
         unsigned long           seg_boundary_mask;
         void                    *dma_drain_buffer;
         unsigned int            dma_drain_size;
         unsigned int            dma_pad_mask;
         unsigned int            dma_alignment;
 
         struct blk_queue_tag    *queue_tags;
         struct list_head        tag_busy_list;
 
         unsigned int            nr_sorted;
         unsigned int            in_flight;
 
         /*
          * sg stuff
          */
         unsigned int            sg_timeout;
         unsigned int            sg_reserved_size;
         int                     node;
 #ifdef CONFIG_BLK_DEV_IO_TRACE
         struct blk_trace        *blk_trace;
 #endif
         /*
          * reserved for flush operations
          */
         unsigned int            ordered, next_ordered, ordseq;
         int                     orderr, ordcolor;
         struct request          pre_flush_rq, bar_rq, post_flush_rq;
         struct request          *orig_bar_rq;
 
         struct mutex            sysfs_lock;
 
 #if defined(CONFIG_BLK_DEV_BSG)
         struct bsg_class_device bsg_dev;
 #endif
 };


*コメント [#ud97624c]

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