*参照元 [#a39af280] #backlinks *説明 [#iccd54e2] -パス: [[linux-2.6.33/include/linux/blkdev.h]] -FIXME: これは何? --説明 **参考 [#qf759182] *実装 [#w9560b92] struct request_queue { /* * Together with queue_head for cacheline sharing */ struct list_head queue_head; struct request *last_merge; struct elevator_queue *elevator; - --[[linux-2.6.33/list_head]] - --[[linux-2.6.33/request]] - --[[linux-2.6.33/elevator_queue]] /* * the queue request freelist, one for reads and one for writes */ struct request_list rq; - --[[linux-2.6.33/request_list]] request_fn_proc *request_fn; make_request_fn *make_request_fn; prep_rq_fn *prep_rq_fn; unplug_fn *unplug_fn; - --[[linux-2.6.33/request_fn_proc]] - --[[linux-2.6.33/make_request_fn]] - --[[linux-2.6.33/prep_rq_fn]] - --[[linux-2.6.33/unplug_fn]] merge_bvec_fn *merge_bvec_fn; prepare_flush_fn *prepare_flush_fn; softirq_done_fn *softirq_done_fn; rq_timed_out_fn *rq_timed_out_fn; - --[[linux-2.6.33/merge_bvec_fn]] - --[[linux-2.6.33/prepare_flush_fn]] - --[[linux-2.6.33/softirq_done_fn]] - --[[linux-2.6.33/rq_timed_out_fn]] dma_drain_needed_fn *dma_drain_needed; lld_busy_fn *lld_busy_fn; - --[[linux-2.6.33/dma_drain_needed_fn]] - --[[linux-2.6.33/lld_busy_fn]] /* * Dispatch queue sorting */ sector_t end_sector; struct request *boundary_rq; - --[[linux-2.6.33/sector_t]] - --[[linux-2.6.33/request]] /* * 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; - --[[linux-2.6.33/timer_list]] - --[[linux-2.6.33/work_struct]] struct backing_dev_info backing_dev_info; - --[[linux-2.6.33/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 */ gfp_t bounce_gfp; - --[[linux-2.6.33/gfp_t]] /* * 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; - --[[linux-2.6.33/spinlock_t]] /* * queue kobject */ struct kobject kobj; - --[[linux-2.6.33/kobject]] /* * queue settings */ unsigned long nr_requests; /* Max # of requests */ unsigned int nr_congestion_on; unsigned int nr_congestion_off; unsigned int nr_batching; 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; - --[[linux-2.6.33/blk_queue_tag]] unsigned int nr_sorted; unsigned int in_flight[2]; unsigned int rq_timeout; struct timer_list timeout; struct list_head timeout_list; struct queue_limits limits; - --[[linux-2.6.33/queue_limits]] /* * 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 - --[[linux-2.6.33/blk_trace]] /* * 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; - --[[linux-2.6.33/mutex]] #if defined(CONFIG_BLK_DEV_BSG) struct bsg_class_device bsg_dev; #endif - --[[linux-2.6.33/bsg_class_device]] }; *コメント [#u1598381]