このページを編集する際は、編集に関する方針に従ってください。

概要

  • mm/rmap.cにて定義
  • 引数で渡されたページをページフレームのマッピングから削除する

引数

実装

/**

* page_remove_rmap - take down pte mapping from a page
* @page: page to remove mapping from
*
* Caller needs to hold the mm->page_table_lock.
*/

void page_remove_rmap(struct page *page) {

	BUG_ON(PageReserved(page));
  • pageが予約されているか調べる
    • 予約されている場合1を返し、予約されていない場合は0を返す
    • 詳細はPageReserved()/linux2.6を参照
	if (atomic_add_negative(-1, &page->_mapcount)) {
		BUG_ON(page_mapcount(page) < 0);
		/*
		 * It would be tidy to reset the PageAnon mapping here,
		 * but that might overwrite a racing page_add_anon_rmap
		 * which increments mapcount after us but sets mapping
		 * before us: so leave the reset to free_hot_cold_page,
		 * and remember that it's only reliable while mapped.
		 * Leaving it set also helps swapoff to reinstate ptes
		 * faster for those pages still in swapcache.
		 */
		if (page_test_and_clear_dirty(page))
			set_page_dirty(page);
		dec_page_state(nr_mapped);
	}

}

呼出元


履歴

  • 作者:ひら
  • 日付:2005/10/4
  • 対象:2.6.10
    更新日更新者更新内容

コメント



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-11-24 (火) 07:16:41 (2921d)