*参照元 [#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]