日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
KVM_OPEN(3) FreeBSD ライブラリ関数マニュアル KVM_OPEN(3) 名称 kvm_open, kvm_open2, kvm_openfiles, kvm_close -- カーネル仮想メモリアクセ スを初期化する ライブラリ カーネルデータアクセスライブラリ (libkvm, -lkvm) 書式 #include <fcntl.h> #include <kvm.h> kvm_t * kvm_open(const char *execfile, const char *corefile, const char *swapfile, int flags, const char *errstr); kvm_t * kvm_open2(const char *execfile, const char *corefile, int flags, char *errbuf, int (*resolver)(const char *name, kvaddr_t *addr)); kvm_t * kvm_openfiles(const char *execfile, const char *corefile, const char *swapfile, int flags, char *errbuf); int kvm_close(kvm_t *kd); 解説 関数 kvm_open(), kvm_open2() と kvm_openfiles() は、kvm(3) ライブラリルー チンを通してカーネル仮想メモリにアクセスするために使用される記述子を返し ます。アクティブなカーネルとクラッシュダンプの両方は、このインタフェース を通してアクセス可能です。 execfile 引数は、検査されているカーネルの実行形式のイメージです。このファ イルは、シンボルテーブルを含んでいなければなりません。この引数が NULL で あるなら、getbootfile(3) から決定されるように、現在実行中のシステムが仮定 されます。 corefile 引数は、カーネルメモリデバイスファイルです。それは、/dev/mem ま たは savecore(8) によって生成されたクラッシュダンプコアのいずれかを指定で きます。corefile が NULL であるなら、<paths.h> の _PATH_MEM によって示さ れるデフォルトが使用されます。また、それは、カーネルメモリに直接アクセス しない ps(1) のようなユーティリティによって特別な値 /dev/null に設定する ことができます。 swapfile 引数は、現在未使用です。 flags 引数は、open(2) でのように読み込み/書き込みアクセスを示し、コアファ イルだけに適用します。O_RDONLY, O_WRONLY と O_RDWR だけが許可されます。 kvm ライブラリは、2 つの異なったエラー報告メカニズムを提供しています。 SunOS kvm ライブラリとの後方互換性を提供する一方、他は、改善されたエラー 報告フレームワークを提供しています。記述子によって使用されるメカニズム は、記述子をオープンするために使用された関数によって決定されます。 kvm_open() 関数は、Sun kvm と互換性のあるオープン呼び出しです。ここで、 errstr 引数は、どのようにエラーが処理されるべきですかを示します。それが NULL であるなら、エラーは、報告されず、アプリケーションは、失敗した kvm 呼び出しの特異性を知ることはできません。それが NULL ではないなら、エラー は、perror(3) でのように、errstr がメッセージの前に付け加えられ、stderr (標準エラー) に印刷 (表示) されます。通常、プログラムの名前が、ここで使用 されます。文字列は、少なくとも対応している kvm_close() 呼び出しまで、存続 すると仮定されます。 kvm_open2() と kvm_openfiles() 関数は、BSD スタイルのエラー報告を提供して います。ここで、エラーメッセージは、ライブラリによって印刷 (表示) されま せん。代わりに、アプリケーションは、kvm_geterr() (kvm_geterr(3) を参照) を使用して最も最近の kvm ライブラリ呼び出しに対応しているエラーメッセージ を取得します。最も最近の kvm 呼び出しがエラーを引き起こさなかったなら、結 果は、不定です。kvm_geterr() は、kvm 記述子を必要としますが、オープンルー チンは、失敗で、NULL を返すので、kvm_geterr() は、オープンが失敗するな ら、エラーメッセージを取得するために使用することはできません。したがっ て、kvm_open2() と kvm_openfiles() は、errbuf 引数にあらゆるエラーメッ セージを置きます。このバッファは、(<limits.h> の) _POSIX2_LINE_MAX 文字の 大きさであるべきです。 resolver 引数は、カーネル仮想アドレスにシンボル名をマップするために、kvm ライブラリによって使用される関数を指します。resolver 関数が呼び出されると き、name は、要求されたシンボル名を指定します。関数がアドレスへの名前を解 決することができるなら、アドレスは、addr に設定されるべきで、関数は、0 を 返すべきです。関数がアドレスへの名前を解決することができないなら、それ は、0 以外の値を返すべきです。ネイティブのカーネルイメージをオープンする とき、resolver は、シンボル名を解決する内部の関数を使用するために、NULL に設定されます。(クラッシュダンプをクロスデバッグしているときのような) ネ イティブではないカーネルイメージは、有効な resolver を必要とします。 戻り値 kvm_open(), kvm_open2() と kvm_openfiles() 関数は、その後のすべての kvm ライブラリ呼び出しで使用される記述子を返します。ライブラリは、完全に再入 可能 (re-entrant) です。失敗すれば、NULL が返されます、その場合に、 kvm_open2() と kvm_openfiles() は、エラーメッセージを errbuf に書き込みま す。 関数 kvm_close() は、処理が成功すると値 0 を返します。そうでない場合、値 -1 が返され、グローバル変数 errno にエラーを示す値が設定されます。 エラー kvm_close() 関数は、失敗し、close(2) のために指定されたエラーのうちのいず れかをグローバル変数 errno に設定します。 また、kvm_close() 関数は、失敗し、以下の場合に、errno を設定します: [EINVAL] kd を通して渡される値は、NULL でした。 関連項目 close(2), open(2), kvm(3), kvm_getargv(3), kvm_getenvv(3), kvm_geterr(3), kvm_getprocs(3), kvm_native(3), kvm_nlist(3), kvm_read(3), kvm_write(3), kmem(4), mem(4) バグ 3 つのオープン呼び出しがあるべきではありません。Sun ライブラリの不明確な エラーセマンティクスと BSD のための後方互換性のライブラリがある要望は、選 択の余地を残しています。 FreeBSD 11.4 March 20, 2017 FreeBSD 11.4