参照元†
- FIXME: これは何?
- いくつかの連続したページのかたまりを表す。
- 通常は struct sg_table 内に struct scatterlist * の配列として置かれているが、page_link を使って別の配列と接続することもできる。
- scatterlist の詳細な辿り方は sg_next() を参照のこと。
struct scatterlist {
#ifdef 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;
#ifdef CONFIG_NEED_SG_DMA_LENGTH
unsigned int dma_length;
#endif
};
コメント†