linux-4.4.1/sg_next()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#wdcee484]
#backlinks
*説明 [#ae664a94]
-パス: [[linux-4.4.1/lib/scatterlist.c]]
-次の scatterlist を取得する。
--sg[n] の配列があり、sg[5] が別の scatterlist sg_other[n...
--sg[0] の先頭から sg_next を連続して読んだ場合、sg[1], s...
sg[0].page_link ---> [page A][page A+1][page A+2][page A...
|
| sg_next()
|
sg[1].page_link ---> [page B][page B+1][page B+2]
...
sg[4].page_link ---> [page E][page E+1]
|
| sg_next()
|
sg[5].page_link ---> sg_other[0][1][2]...
|
| sg_next()
|
sg_other[0].page_link ---> [page F][page F+1][page F+2]
|
| sg_next()
|
sg_other[1].page_link ---> [page G][page G+1]
...
-page_link は何を指しているか?
--連結する場合: 次の scatterlist の先頭(struct scatterli...
---[[linux-4.4.1/sg_chain()]]
--連結しない場合: ページのかたまりの先頭ページ(struct pa...
---[[linux-4.4.1/sg_page()]]
-page_link の下位 2ビットをフラグとして使っているため、sc...
**引数 [#ba3ff20a]
-struct scatterlist *sg
--連続したページのかたまり(scatterlist)
--[[linux-4.4.1/scatterlist]]
**返り値 [#pad19488]
-struct scatterlist *
--次の scatterlist
**参考 [#sa3680c4]
*実装 [#o4692935]
/**
* sg_next - return the next scatterlist entry in a list
* @sg: The current sg entry
*
* Description:
* Usually the next entry will be @sg@ + 1, but if thi...
* of a chained scatterlist, it could jump to the star...
* scatterlist array.
*
**/
struct scatterlist *sg_next(struct scatterlist *sg)
{
#ifdef CONFIG_DEBUG_SG
-デバッグが有効
--[[linux-4.4.1/CONFIG_DEBUG_SG]]
BUG_ON(sg->sg_magic != SG_MAGIC);
#endif
if (sg_is_last(sg))
return NULL;
-次が無ければ NULL を返す。
--[[linux-4.4.1/sg_is_last()]]
sg++;
if (unlikely(sg_is_chain(sg)))
sg = sg_chain_ptr(sg);
-sg は配列になっているので、次の要素を指すポインタは sg++...
--ただし別の配列と連結されている場合は、sg_chain_ptr() で...
--[[linux-4.4.1/unlikely()]]
--[[linux-4.4.1/sg_is_chain()]]
--[[linux-4.4.1/sg_chain_ptr()]]
return sg;
}
EXPORT_SYMBOL(sg_next);
-ライセンスに関わらずシンボルを公開する。
--[[linux-4.4.1/EXPORT_SYMBOL()]]
*コメント [#xae5f038]
終了行:
*参照元 [#wdcee484]
#backlinks
*説明 [#ae664a94]
-パス: [[linux-4.4.1/lib/scatterlist.c]]
-次の scatterlist を取得する。
--sg[n] の配列があり、sg[5] が別の scatterlist sg_other[n...
--sg[0] の先頭から sg_next を連続して読んだ場合、sg[1], s...
sg[0].page_link ---> [page A][page A+1][page A+2][page A...
|
| sg_next()
|
sg[1].page_link ---> [page B][page B+1][page B+2]
...
sg[4].page_link ---> [page E][page E+1]
|
| sg_next()
|
sg[5].page_link ---> sg_other[0][1][2]...
|
| sg_next()
|
sg_other[0].page_link ---> [page F][page F+1][page F+2]
|
| sg_next()
|
sg_other[1].page_link ---> [page G][page G+1]
...
-page_link は何を指しているか?
--連結する場合: 次の scatterlist の先頭(struct scatterli...
---[[linux-4.4.1/sg_chain()]]
--連結しない場合: ページのかたまりの先頭ページ(struct pa...
---[[linux-4.4.1/sg_page()]]
-page_link の下位 2ビットをフラグとして使っているため、sc...
**引数 [#ba3ff20a]
-struct scatterlist *sg
--連続したページのかたまり(scatterlist)
--[[linux-4.4.1/scatterlist]]
**返り値 [#pad19488]
-struct scatterlist *
--次の scatterlist
**参考 [#sa3680c4]
*実装 [#o4692935]
/**
* sg_next - return the next scatterlist entry in a list
* @sg: The current sg entry
*
* Description:
* Usually the next entry will be @sg@ + 1, but if thi...
* of a chained scatterlist, it could jump to the star...
* scatterlist array.
*
**/
struct scatterlist *sg_next(struct scatterlist *sg)
{
#ifdef CONFIG_DEBUG_SG
-デバッグが有効
--[[linux-4.4.1/CONFIG_DEBUG_SG]]
BUG_ON(sg->sg_magic != SG_MAGIC);
#endif
if (sg_is_last(sg))
return NULL;
-次が無ければ NULL を返す。
--[[linux-4.4.1/sg_is_last()]]
sg++;
if (unlikely(sg_is_chain(sg)))
sg = sg_chain_ptr(sg);
-sg は配列になっているので、次の要素を指すポインタは sg++...
--ただし別の配列と連結されている場合は、sg_chain_ptr() で...
--[[linux-4.4.1/unlikely()]]
--[[linux-4.4.1/sg_is_chain()]]
--[[linux-4.4.1/sg_chain_ptr()]]
return sg;
}
EXPORT_SYMBOL(sg_next);
-ライセンスに関わらずシンボルを公開する。
--[[linux-4.4.1/EXPORT_SYMBOL()]]
*コメント [#xae5f038]
ページ名: