EN JA
KVM(3)
KVM(3) FreeBSD Library Functions Manual KVM(3)

名称

kvmカーネルメモリインタフェース

ライブラリ

Kernel Data Access Library (libkvm, -lkvm)

解説

kvm ライブラリは、実行中のシステムとクラッシュダンプを含めて、カーネル仮想メモリイメージをアクセスするための一貫したインタフェースを提供しています。実行中のシステムへのアクセスは、いくつかの関数のために、 sysctl(3) を通して、他の関数のために、 mem(4)kmem(4) を通して行われ、一方、 savecore(8) によって生成されるコアファイルを通してクラッシュダンプを調査することができます。インタフェースは、いずれにしても、同じように振る舞います。メモリを読み込み書き込みすることができ、カーネルシンボルアドレスを効率的に検索することができ、ユーザプロセスに関する情報を集めることができます。

kvm_open() 関数は、その後のすべての呼び出しのための記述子を取得するために最初に呼び出されます。

互換性

kvm インタフェースは、SunOS で始めて導入されました。プログラムのかなりの部分は、後方互換性を高度に価値があるようにして、このインタフェースを使用して開発されています。あらゆる点で、Sun kvm インタフェースは、一貫していてクリーンです。そのために、インタフェースの一般的な部分 (すなわち kvm_open(), kvm_close(), kvm_read(), kvm_write() と kvm_nlist()) は、 BSD インタフェースに組み込まれています。実際に、多くの kvm アプリケーション (例えば、デバッガと統計モニタ) は、インタフェースのこのサブセットのみを使用します。

プロセスインタフェースは、保持されてませんでした。プロセスを操作するあらゆるコードは、本質的にマシン依存であるので、これは、移植性の問題ではありません。

最後に、Sun kvm のエラー報告セマンティクスは、不完全に定義されています。自動的に stderr にエラーを印刷 (表示) するか、またはエラーメッセージをまったく印刷 (表示) しないのかのいずれかにライブラリを設定することができます。後者の場合は、エラーの本質を、判断することはできません。これを克服するために、 BSD インタフェースは、与えられた記述子で最も最近のエラー状態に対応するエラーメッセージを (印刷せずに) 返すために、ルーチン kvm_geterr(3) を含んでいます。

April 25, 2010 FreeBSD