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

概要

  • mm/memory.cにて定義
  • 引数で渡されたメモリリージョンが無名マッピングでない場合は1を返す。
    • 無名マッピングである場合は0を返す。

引数

実装

static inline int untouched_anonymous_page(struct mm_struct* mm, struct vm_area_struct *vma,

			 unsigned long address)

{

	pgd_t *pgd;
	pmd_t *pmd;
	/* Check if the vma is for an anonymous mapping. */
	if (vma->vm_ops && vma->vm_ops->nopage)
		return 0;
  • メモリリージョンvmaはディスク上のファイルをマッピングしていない無名マッピングの場合は0を返して終了
	/* Check if page directory entry exists. */
	pgd = pgd_offset(mm, address);
  • addressに対応するページグローバルディレクトリを返す
	if (pgd_none(*pgd) || unlikely(pgd_bad(*pgd)))
		return 1;
	/* Check if page middle directory entry exists. */
	pmd = pmd_offset(pgd, address);
  • ページミドルディレクトリpgdの特定エントリのアドレスを返す
	if (pmd_none(*pmd) || unlikely(pmd_bad(*pmd)))
		return 1;
  • ページミドルディレクトリpmdが存在しない場合は1を返す
  • ページミドルディレクトリpmdが不正であるか判定する
    • 不正である場合は1を、そうでない場合は0を返す
    • 詳細はpmd_bad()/linux2.6を参照
	/* There is a pte slot for 'address' in 'mm'. */
	return 0;

}

呼出元


履歴

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

コメント



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