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

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS