KVM(3)

名称
kvm - カーネル・メモリ・インタフェース

解説
kvm(3) ライブラリは、作動中のシステムとクラッシュダンプを含めて、 カーネル仮想メモリイメージをアクセスするための 一様なインタフェースを提供します。 作動中のシステムへのアクセスは /dev/mem を経由して行われます。 他方、クラッシュダンプは 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) ルーチンを含み、 該当の記述子における最新のエラー状態に対応する エラー・メッセージを戻します (印字しません)。

関連項目
kvm_close(3), kvm_getargv(3), kvm_getenvv(3), kvm_geterr(3,) kvm_getloadavg(3), kvm_getprocs(3), kvm_nlist(3), kvm_open(3), kvm_openfiles(3), kvm_read(3), kvm_write(3)