*参照元 [#saf84e55]
#backlinks

*説明 [#pc928cf8]
-パス: [[linux-2.6.33/block/blk-core.c]]

-FIXME: これは何?

-スラブアロケータからキュー用の領域を確保する。
--スラブアロケータを使うための準備は blk_dev_init() で行う。
--[[linux-2.6.33/blk_dev_init()]]
--[[linux-2.6/スラブアロケータ]]


**引数 [#a315a6cf]
-gfp_t gfp_mask
--
--[[linux-2.6.33/gfp_t]]
-int node_id
--


**返り値 [#hc4fd82a]
-struct request_queue *
--
--[[linux-2.6.33/request_queue]]


**参考 [#e1c50788]


*実装 [#aea54076]
 struct request_queue *blk_alloc_queue_node(gfp_t gfp_mask, int node_id)
 {
 	struct request_queue *q;
 	int err;
 
 	q = kmem_cache_alloc_node(blk_requestq_cachep,
 				gfp_mask | __GFP_ZERO, node_id);
 	if (!q)
 		return NULL;
 
-blk_requestq_cachep は static 変数、kmem_cache 型
--[[linux-2.6.33/kmem_cache]]
-
--[[linux-2.6.33/__GFP_ZERO]]
-
--[[linux-2.6.33/kmem_cache_alloc_node()]]

 	q->backing_dev_info.unplug_io_fn = blk_backing_dev_unplug;
 	q->backing_dev_info.unplug_io_data = q;
 	q->backing_dev_info.ra_pages =
 			(VM_MAX_READAHEAD * 1024) / PAGE_CACHE_SIZE;
 	q->backing_dev_info.state = 0;
 	q->backing_dev_info.capabilities = BDI_CAP_MAP_COPY;
 	q->backing_dev_info.name = "block";
 
-
--[[linux-2.6.33/VM_MAX_READAHEAD]]
-
--[[linux-2.6.33/PAGE_CACHE_SIZE]]
-
--[[linux-2.6.33/BDI_CAP_MAP_COPY]]
-q->backing_dev_info は、backing_dev_info 型
--[[linux-2.6.33/backing_dev_info]]
-
--[[linux-2.6.33/blk_backing_dev_unplug()]]

 	err = bdi_init(&q->backing_dev_info);
 	if (err) {
 		kmem_cache_free(blk_requestq_cachep, q);
 		return NULL;
 	}
 
-
--[[linux-2.6.33/bdi_init()]]
-
--[[linux-2.6.33/kmem_cache_free()]]

 	init_timer(&q->unplug_timer);
 	setup_timer(&q->timeout, blk_rq_timed_out_timer, (unsigned long) q);
 	INIT_LIST_HEAD(&q->timeout_list);
 	INIT_WORK(&q->unplug_work, blk_unplug_work);
 
-
--[[linux-2.6.33/init_timer()]]
-
--[[linux-2.6.33/setup_timer()]]
-
--[[linux-2.6.33/blk_rq_timed_out_timer()]]
-
--[[linux-2.6.33/INIT_LIST_HEAD()]]
-
--[[linux-2.6.33/INIT_WORK()]]
-
--[[linux-2.6.33/blk_unplug_work()]]

 	kobject_init(&q->kobj, &blk_queue_ktype);
 
-
--[[linux-2.6.33/kobject_init()]]

 	mutex_init(&q->sysfs_lock);
 	spin_lock_init(&q->__queue_lock);
 
-
--[[linux-2.6.33/mutex_init()]]
-
--[[linux-2.6.33/spin_lock_init()]]

 	return q;
 }
 EXPORT_SYMBOL(blk_alloc_queue_node);
-ライセンスに関係なくシンボルを公開する。
--[[linux-2.6.33/EXPORT_SYMOBOL()]]
--[[linux-2.6.33/EXPORT_SYMBOL()]]


*コメント [#v500307f]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS