*参照元 [#ecdd9c5c]
#backlinks

*説明 [#s3cf2076]
-パス: [[linux-4.4.1/include/linux/scatterlist.h]]

-FIXME: これは何?
--いくつかの連続したページのかたまりを表す。
--通常は struct sg_table 内に struct scatterlist * の配列として置かれているが、page_link を使って別の配列と接続することもできる。
---[[linux-4.4.1/sg_table]]

-scatterlist の詳細な辿り方は sg_next() を参照のこと。
--[[linux-4.4.1/sg_next()]]


**参考 [#fd5b66f3]


*実装 [#f346d13d]
 struct scatterlist {
 #ifdef CONFIG_DEBUG_SG
-
-デバッグが有効
--[[linux-4.4.1/CONFIG_DEBUG_SG]]

         unsigned long   sg_magic;
-scatterlist ではないデータが入っている領域を間違って scatterlist として処理したときに検知するためのマジックナンバー。

 #endif
         unsigned long   page_link;
-先頭のページへのポインタ(struct page *)、もしくは次の scatterlist の配列の先頭へのポインタ(struct scatterlist *)。
--単純なポインタではなく、下位 2ビットはフラグとして用いている。

         unsigned int    offset;
         unsigned int    length;
-オフセット、領域の大きさ

         dma_addr_t      dma_address;
-
--[[linux-4.4.1/dma_addr_t]]

 #ifdef CONFIG_NEED_SG_DMA_LENGTH
-
--[[linux-4.4.1/CONFIG_NEED_SG_DMA_LENGTH]]

         unsigned int    dma_length;
 #endif
 };


*コメント [#g7a0f35c]

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