- 追加された行はこの色です。
- 削除された行はこの色です。
*参照元 [#wee9b246]
#backlinks
*説明 [#of645f8d]
-パス: [[linux-4.4.1/include/linux/scatterlist.h]]
-FIXME: これは何?
--ページのかたまり(scatterlist)の配列 2つを連結する。
**引数 [#c4c977d6]
-struct scatterlist *prv
--連続したページのかたまり(scatterlist)の配列
--[[linux-4.4.1/scatterlist]]
-unsigned int prv_nents
--prv の長さ、つまり struct scatterlist の配列の要素数
--連結後の prv の最後の要素 prv[prv_nents - 1] はリストの連結用として使われるため、ページのかたまりを指さなくなる。
--連結後の prv[prv_nents - 1] の page_link はページ struct page * ではなく、次の scatterlist の先頭(struct scatterlist *)を保持しているので、sg_page() に渡してはいけない。
-struct scatterlist *sgl
--prv に連結する、scatterlist の配列
**返り値 [#g8dda06d]
-なし
**参考 [#z3da937c]
*実装 [#pba24e5f]
/**
* sg_chain - Chain two sglists together
* @prv: First scatterlist
* @prv_nents: Number of entries in prv
* @sgl: Second scatterlist
*
* Description:
* Links @prv@ and @sgl@ together, to form a longer scatterlist.
*
**/
static inline void sg_chain(struct scatterlist *prv, unsigned int prv_nents,
struct scatterlist *sgl)
{
/*
* offset and length are unused for chain entry. Clear them.
*/
prv[prv_nents - 1].offset = 0;
prv[prv_nents - 1].length = 0;
-連結後の最後の要素だけは特別扱いされる。
--prv の最後の要素 prv[prv_nents - 1] はリストの連結用として使われるため、ページのかたまりを指さない、このため offset, length は無効となる。
/*
* Set lowest bit to indicate a link pointer, and make sure to clear
* the termination bit if it happens to be set.
*/
prv[prv_nents - 1].page_link = ((unsigned long) sgl | 0x01) & ~0x02;
}
-連結後の最後の要素だけは特別扱いされる。
--prv[prv_nents - 1] の page_link はページ struct page * ではなく、次の scatterlist の先頭(struct scatterlist *)を保持する。
*コメント [#f994bd1a]