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

概要

  • linux2.6/mm/memory.cにて定義
  • 引数で渡されたページミドルディレクトリを1つ解放する

引数

  • tlb--TLBを管理する構造体
  • dir--ページミドルディレクトリ

実装

/*

* Note: this doesn't free the actual pages themselves. That
* has been handled earlier when unmapping all the memory regions.
*/

static inline void free_one_pmd(struct mmu_gather *tlb, pmd_t * dir) {

	struct page *page;
	if (pmd_none(*dir))
		return;
  • ページミドルディレクトリdirが存在しない場合は1を返す
	if (unlikely(pmd_bad(*dir))) {
  • ページミドルディレクトリdirが不正であるか判定する
    • 不正である場合は1を、そうでない場合は0を返す
    • 詳細はpmd_bad()/linux2.6を参照
		pmd_ERROR(*dir);
  • ページミドルディレクトリdirに関するエラーを出力する
		pmd_clear(dir);
		return;
	}
	page = pmd_page(*dir);
	pmd_clear(dir);
	dec_page_state(nr_page_table_pages);
	tlb->mm->nr_ptes--;
	pte_free_tlb(tlb, page);

}

呼出元


履歴

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

コメント



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