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