Bio reqeust requestqueue

(버전 사이의 차이)
이동: 둘러보기, 찾기
3번째 줄: 3번째 줄:
 
bi_next : struct bio *
 
bi_next : struct bio *
 
bi_bdev : struct block_device *
 
bi_bdev : struct block_device *
bi_flags : unsigned long
 
 
bi_rw : unsigned long  
 
bi_rw : unsigned long  
bi_iter : struct bvec_iter  
+
bi_iter : struct bvec_iter
bi_phys_segments : unsigned int
+
bi_seg_front_size : unsigned int
+
bi_seg_back_size : unsigned int
+
bi_remaining : atomic_t
+
*bi_end_io : bio_end_io_t
+
*bi_private : void
+
bi_vcnt : unsigned short
+
bi_max_vecs : unsigned short
+
bi_cnt : atomic_t       
+
*bi_io_vec : struct bio_vec
+
*bi_pool : struct bio_set
+
 
bi_inline_vecs[0] : struct bio_vec
 
bi_inline_vecs[0] : struct bio_vec
 +
...
 
}
 
}
 
bio1 -right-> bio2 : bi_next
 
bio1 -right-> bio2 : bi_next
 +
bio1 --> bio_vec1 : bi_inline_vecs[0] (Index : bi_iter->bi_idx)
 +
bio1 --> bio_vec2 : bi_inline_vecs[1] (Index : bi_iter->bi_idx)
  
 
class bio2 << (S,#FF7700) >> {
 
class bio2 << (S,#FF7700) >> {
*bi_next : struct bio
+
bi_next : struct bio *
*bi_bdev : struct block_device
+
bi_bdev : struct block_device *
bi_flags : unsigned long
+
 
bi_rw : unsigned long  
 
bi_rw : unsigned long  
bi_iter : struct bvec_iter  
+
bi_iter : struct bvec_iter
bi_phys_segments : unsigned int
+
bi_seg_front_size : unsigned int
+
bi_seg_back_size : unsigned int
+
bi_remaining : atomic_t
+
*bi_end_io : bio_end_io_t
+
*bi_private : void
+
bi_vcnt : unsigned short
+
bi_max_vecs : unsigned short
+
bi_cnt : atomic_t       
+
*bi_io_vec : struct bio_vec
+
*bi_pool : struct bio_set
+
 
bi_inline_vecs[0] : struct bio_vec
 
bi_inline_vecs[0] : struct bio_vec
 +
...
 
}
 
}
 
bio2 --> bio2 : bi_next
 
bio2 --> bio2 : bi_next
 +
bio2 --> bio_vec3 : bi_inline_vecs[0] (Index : bi_iter->bi_idx)
  
  
 
class bio_vec1 << (S,#FF7700) >> {
 
class bio_vec1 << (S,#FF7700) >> {
*bv_page : struct page    
+
bv_page : struct page *
bv_len : unsigned int  
+
bv_len : unsigned int
bv_offset : unsigned int  
+
bv_offset : unsigned int
 
}
 
}
bio1 --> bio_vec1 : bi_inline_vecs[0]
 
bio1 --> bio_vec2 : bi_inline_vecs[1]
 
  
  
 
class bio_vec2 << (S,#FF7700) >> {
 
class bio_vec2 << (S,#FF7700) >> {
*bv_page : struct page     
+
bv_page : struct page *      
 
bv_len : unsigned int     
 
bv_len : unsigned int     
 
bv_offset : unsigned int     
 
bv_offset : unsigned int     
60번째 줄: 39번째 줄:
  
 
class bio_vec3 << (S,#FF7700) >> {
 
class bio_vec3 << (S,#FF7700) >> {
*bv_page : struct page    
+
bv_page : struct page *   
 
bv_len : unsigned int     
 
bv_len : unsigned int     
 
bv_offset : unsigned int     
 
bv_offset : unsigned int     
 
}
 
}
bio2 --> bio_vec3 : bi_inline_vecs[0]
+
 
  
  
 
class request_queue << (S,#FF7700) >> {
 
class request_queue << (S,#FF7700) >> {
queue_head : struct list_head
+
elevator : struct elevator_queue *
*last_merge : struct request
+
*elevator : struct elevator_queue  
+
nr_rqs[2] : int
+
nr_rqs_elvpriv : int
+
 
+
 
root_rl : struct request_list  
 
root_rl : struct request_list  
*request_fn : request_fn_proc  
+
request_fn : request_fn_proc *
*prep_rq_fn : prep_rq_fn  
+
prep_rq_fn : prep_rq_fn *
*unprep_rq_fn : unprep_rq_fn
+
*merge_bvec_fn : merge_bvec_fn
+
*softirq_done_fn : softirq_done_fn
+
*rq_timed_out_fn : rq_timed_out_fn
+
*dma_drain_needed : dma_drain_needed_fn
+
*lld_busy_fn : lld_busy_fn
+
 
+
*mq_ops : struct blk_mq_ops
+
*mq_map : unsigned int
+
*queue_ctx : struct blk_mq_ctx
+
nr_hw_queues : unsigned int
+
end_sector : sector_t
+
*boundary_rq : struct request
+
 
delay_work : struct delayed_work  
 
delay_work : struct delayed_work  
backing_dev_info : struct backing_dev_info
+
...
queuedata : void
+
queue_flags : unsigned long
+
id : int
+
bounce_gfp : gfp_t
+
__queue_lock : spinlock_t
+
*queue_lock : spinlock_t
+
kobj : struct kobject
+
mq_kobj : struct kobject
+
 
+
nr_requests : unsigned long
+
nr_congestion_on : unsigned int 
+
nr_congestion_off : unsigned int
+
nr_batching : unsigned int
+
dma_drain_size : unsigned int
+
*dma_drain_buffer : void
+
dma_pad_mask : unsigned int
+
dma_alignment : unsigned int
+
*queue_tags : struct blk_queue_tag
+
tag_busy_list : struct list_head
+
nr_sorted : unsigned int 
+
in_flight[2] : unsigned int
+
request_fn_active : unsigned int
+
rq_timeout : unsigned int
+
timeout : struct timer_list
+
timeout_list : struct list_head
+
icq_list : struct list_head
+
 
+
limits : struct queue_limits
+
sg_timeout : unsigned int
+
sg_reserved_size : unsigned int
+
node : int
+
 
+
flush_flags : unsigned int
+
flush_not_queueable:1 : unsigned int
+
flush_queue_delayed:1 : unsigned int
+
flush_pending_idx:1 : unsigned int
+
flush_running_idx:1 : unsigned int
+
flush_pending_since : unsigned long
+
flush_queue[2] : struct list_head
+
flush_data_in_flight : struct list_head
+
*flush_rq : struct request
+
mq_flush_lock : spinlock_t
+
sysfs_lock : struct mutex
+
bypass_depth : int
+
 
+
rcu_head : struct rcu_head
+
mq_freeze_wq : wait_queue_head_t
+
mq_usage_counter : struct percpu_counter
+
all_q_node : struct list_head
+
 
}
 
}
 
request_queue -right-> request : root_rl
 
request_queue -right-> request : root_rl
147번째 줄: 59번째 줄:
  
 
class request << (S,#FF7700)/linux/blkdev.h >> {
 
class request << (S,#FF7700)/linux/blkdev.h >> {
queuelist : struct list_head
+
q : struct request_queue *
union {
+
bio : struct bio *
      csd : struct call_single_data
+
biotail : struct bio *
      mq_flush_work : struct work_struct
+
...
};
+
*q : struct request_queue  
+
*mq_ctx : struct blk_mq_ctx
+
cmd_flags : u64
+
cmd_type : enum rq_cmd_type_bits
+
atomic_flags : unsigned long
+
cpu : int
+
__data_len : unsigned int
+
__sector : sector_t
+
*bio : struct bio  
+
*biotail : struct bio
+
hash : struct hlist_node
+
union {
+
rb_node : struct rb_node
+
*completion_data : void
+
};
+
union {
+
struct {
+
*icq : struct io_cq
+
*priv[2] : void
+
} elv;
+
struct {
+
seq : unsigned int
+
list : struct list_head
+
*saved_end_io : rq_end_io_fn
+
} flush;
+
};
+
*rq_disk : struct gendisk
+
*part : struct hd_struct
+
start_time : unsigned long
+
ioprio : unsigned short
+
*special : void   
+
*buffer : char 
+
tag : int
+
errors : int
+
__cmd[BLK_MAX_CDB] : unsigned char
+
*cmd : unsigned char
+
cmd_len : unsigned short
+
extra_len : unsigned int
+
sense_len : unsigned int
+
resid_len : unsigned int 
+
*sense : void
+
deadline : unsigned long
+
timeout_list : struct list_head
+
timeout : unsigned int
+
retries : int
+
*end_io : rq_end_io_fn
+
*end_io_data : void
+
*next_rq : struct request
+
 
}
 
}
 
request -left-> request_queue : *q
 
request -left-> request_queue : *q
206번째 줄: 69번째 줄:
  
 
</uml>
 
</uml>
 +
a

2014년 5월 15일 (목) 14:00 판

a

개인 도구
이름공간
변수
행위
둘러보기
구성원
연구
연구실
기타
도구모음
인쇄/내보내기