*参照元 [#je6472a2] #backlinks *説明 [#i87cc72c] -パス: [[linux-2.6.33/include/linux/page-flags.h]] -PG_uptodate ビットのテスト --指定されたページのフラグ(flags メンバ)に PG_uptodate ビットが立っているかテストする。 --このフラグは他の CPU から更新されている場合があるため、 読み込みメモリバリアが必要。 **引数 [#m2468e41] -struct page *page --フラグを検査するページ構造体 --[[linux-2.6.33/page]] **返り値 [#mb524d27] -int(おそらく) --型、意味は test_bit() に準じる。 --型はおそらく int。意味はビットがセットされていれば 0 以外、ビットがセットされていなければ 0 が返る、ことが多い。 **参考 [#p0c8b4f5] -ページの属性フラグ(PG_xxxx) --[[linux-2.6.33/pageflags]] -この関数の片割れ(セット関数) --[[linux-2.6.33/SetPageUptodate()]] *実装 [#ra9382e1] static inline int PageUptodate(struct page *page) { int ret = test_bit(PG_uptodate, &(page)->flags); -ビット位置にビットがあるかテストする。 --[[linux-2.6.33/test_bit()]] /* * Must ensure that the data we read out of the page is loaded * _after_ we've loaded page->flags to check for PageUptodate. * We can skip the barrier if the page is not uptodate, because * we wouldn't be reading anything from it. * * See SetPageUptodate() for the other side of the story. */ if (ret) smp_rmb(); -読み込みメモリバリア。 --[[linux-2.6.33/smp_rmb()]] return ret; } *コメント [#xf59aa5c]