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

概要

  • include/asm-i386/pgtable.hにて定義
  • 仮想アドレスからページミドルディレクトリのエントリのインデックスを取り出す

引数

  • address--仮想アドレス

実装

/*

* the pmd page can be thought of an array like this: pmd_t[PTRS_PER_PMD]
*
* this macro returns the index of the entry in the pmd page which would
* control the given virtual address
*/

#define pmd_index(address) \

		( ( (address) >> PMD_SHIFT) & (PTRS_PER_PMD-1) )
  • PMD_SHIFT は 21 で定義されている
    • 21bit目から始まる9bitが、仮想アドレス上のpmdの領域(つまりpmdのインデックス領域)
  • PTRS_PER_PMD はページミドルディレクトリのエントリの最大数
  • PTRS_PER_PMD はPAEが有効の場合は 512 で定義されている
    • 512-1=511(1 1111 1111)
      PGD=0PMD=0
      PMD=1
      PMD=2
      PMD=3
      PMD=...
      PMD=511
      PGD=1PMD=0
      PMD=1
      PMD=2
      PMD=3
      PMD=...
      PMD=511
      ......
      PGD=4PMD=0
      PMD=1
      PMD=2
      PMD=3
      PMD=...
      PMD=511
  • PTRS_PER_PMDはPAEが無効の場合は1である。
    • つまりpgdのすべてのエントリはpmdの0番目のエントリを示す
      PGD=0PMD=0
      PGD=1PMD=0
      PGD=2PMD=0
      PGD=...PMD=0
      PGD=1023PMD=0

呼出元


履歴

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

コメント



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