KVM(3)

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

ライブラリ
libkvm

解説
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_getfiles(3), kvm_getloadavg(3), kvm_getprocs(3), kvm_getswapinfo(3), kvm_nlist(3), kvm_open(3), kvm_openfiles(3), kvm_read(3), kvm_write(3)