0

別のモジュールのLinuxカーネルモジュールとしてAPIを作成しています。初期開発では、APIに渡される物理メモリポインタのメモリ範囲チェックを行いたいと思います。そうすれば、私のモジュールはモジュールのバグを見つけるのに役立ち、私のモジュールは悪いポインタのせいにすることはできません。

カーネル内のユーザースペースポインタで有効なメモリをチェックする方法はたくさんあることを私は知っています。問題は、カーネルにアクセス可能な物理メモリの範囲チェックを行うためのパッケージ済みの方法が見つからないことです。

通常のカーネル線形アドレス範囲をチェックすることは確かに可能です(0x00000000から0xbfffffffおよび0xc0000000から0xffffffff [Linuxカーネル第3版を理解する])。これを行うためにカーネルですぐに利用でき、私の提案よりも優れている可能性のある関数またはマクロはありますか?

4

1 に答える 1

1

それらが本当に物理アドレスである場合は、を使用できますpage_is_ram()

ただし、カーネル仮想アドレスを取得している可能性があります。その場合は、最初にそれらを変換する必要があります。

于 2012-08-15T13:30:00.447 に答える