.\" Copyright (C) 1996 Free Software Foundation, Inc. .\" .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE) .\" This file is distributed according to the GNU General Public License. .\" %%%LICENSE_END .\" .\" 2006-02-09, some reformatting by Luc Van Oostenryck; some .\" reformatting and rewordings by mtk .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" .\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved. .\" Translated 2006-07-29, Akihiro MOTOKI .\" Updated 2013-05-01, Akihiro MOTOKI .\" Updated 2013-05-06, Akihiro MOTOKI .\" .TH QUERY_MODULE 2 2014\-05\-10 Linux "Linux Programmer's Manual" .SH 名前 query_module \- モジュールに関連する各種の情報をカーネルに問い合わせる .SH 書式 .nf \fB#include \fP .sp \fBint query_module(const char *\fP\fIname\fP\fB, int \fP\fIwhich\fP\fB, void *\fP\fIbuf\fP\fB,\fP \fB size_t \fP\fIbufsize\fP\fB, size_t *\fP\fIret\fP\fB);\fP .fi \fI注意\fP: この関数の宣言は glibc のヘッダーでは提供されていない。「注意」を参照。 .SH 説明 \fI注意\fP: このシステムコールが存在するのは、カーネル 2.6 より前の Linux だけである。 \fBquery_module\fP() は、ローダーブルモジュールに関する情報をカーネルに問い合わせる。 情報は \fIbuf\fP が指し示すバッファーに格納されて返される。 呼び出し元は \fIbuf\fP のサイズを \fIbufsize\fP に指定しなければならない。 得られる情報の正確な意味とフォーマットは、 \fIwhich\fP でどの操作を指定するかによって異なる。 現在ロードされているモジュールを特定するために \fIname\fP を必要とする操作があれば、 カーネル固有であることを示す NULL を指定できる操作もある。 \fIwhich\fP には以下の値を指定できる: .TP \fB0\fP カーネルが \fBquery_module\fP() をサポートしている場合、成功を返す。 このシステムコールが利用可能かを調べるために使われる。 .TP \fBQM_MODULES\fP .\" ret is set on ENOSPC ロードされている全てのモジュールの名前を返す。 バッファーには、ヌル終端された文字列が順に入る。 返されるバッファー \fIret\fP にはモジュールの数が設定される。 .TP \fBQM_DEPS\fP .\" ret is set on ENOSPC 指定されたモジュールが使用している全モジュールの名前を返す。 バッファーには、ヌル終端された文字列が順に入る。 返されるバッファー \fIret\fP にはモジュールの数が設定される。 .TP \fBQM_REFS\fP .\" ret is set on ENOSPC 指定されたモジュールを使用している全モジュールの名前を返す。 これは \fBQM_DEPS\fP と逆の機能である。 バッファーには、ヌル終端された文字列が順に入る。 返されるバッファー \fIret\fP にはモジュールの数が設定される。 .TP \fBQM_SYMBOLS\fP .\" ret is set on ENOSPC カーネルまたは指定されたモジュールがエクスポートしているシンボルと 値を返す。 バッファーのデータは、 以下の構造体の配列にヌル終端された文字列が続く形となる。 .in +4n .nf struct module_symbol { unsigned long value; unsigned long name; }; .fi .in .IP \fIname\fP の値は、 \fIbuf\fP の先頭からの文字列までのオフセット文字数である。 \fIret\fP にはシンボルの数が設定される。 .TP \fBQM_INFO\fP 指定されたモジュールに関する様々な情報を返す。 出力バッファーのフォーマットは以下の形式となる: .in +4n .nf struct module_info { unsigned long address; unsigned long size; unsigned long flags; }; .fi .in .IP \fIaddress\fP はそのモジュールが配置されているカーネル空間上のアドレス、 \fIsize\fP はそのモジュールのバイト単位のサイズ、 \fIflags\fP は \fBMOD_RUNNING\fP, \fBMOD_AUTOCLEAN\fP 等のマスクであり、そのモジュールの現在の状態を示す (Linux カーネルのソースファイル \fIinclude/linux/module.h\fP を参照)。 \fIret\fP には \fImodule_info\fP 構造体のサイズが設定される。 .SH 返り値 成功の場合 0 が返される。エラーの場合 \-1 が返され、 \fIerrno\fP に適切な値が設定される。 .SH エラー .TP \fBEFAULT\fP \fIname\fP, \fIbuf\fP, \fIret\fP の少なくとも一つが、プログラムがアクセスできる アドレス空間の外部であった。 .TP \fBEINVAL\fP .\" Not permitted with QM_DEPS, QM_REFS, or QM_INFO. \fIwhich\fP が不正である。あるいは \fIname\fP が NULL だが (NULL は "カーネル" を示す)、 \fIwhich\fP で指定された値との組み合わせは許可されていない。 .TP \fBENOENT\fP \fIname\fP という名前のモジュールが存在しない。 .TP \fBENOSPC\fP 与えられたバッファーの大きさが小さすぎる。 \fIret\fP には最小限必要なバッファーのサイズが設定される。 .TP \fBENOSYS\fP \fBquery_module\fP() はこのバージョンのカーネルではサポートされていない (例えば、カーネルのバージョンが 2.6 以降)。 .SH バージョン .\" Removed in Linux 2.5.48 このシステムコールが存在するのはカーネル 2.4 までの Linux だけである。 Linux 2.6 では削除された。 .SH 準拠 \fBquery_module\fP() は Linux 固有である。 .SH 注意 以前 \fBquery_module\fP() で得られた情報のいくつかは、 \fI/proc/modules\fP, \fI/proc/kallsyms\fP および \fI/sys/module\fP ディレクトリ内のファイルから取得できる。 \fBquery_module\fP() システムコールは glibc ではサポートされていない。 glibc ヘッダーでは宣言は提供されていないが、 歴史の紆余曲折を経て glibc はこのシステムコールに対する ABI を公開していない。 したがって、このシステムコールを利用するには、自分のコードの中で手動でインターフェースを宣言すればよい。 \fBsyscall\fP(2) を使ってシステムコールを起動できる。 .SH 関連項目 \fBcreate_module\fP(2), \fBdelete_module\fP(2), \fBget_kernel_syms\fP(2), \fBinit_module\fP(2), \fBlsmod\fP(8), \fBmodinfo\fP(8) .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man\-pages/ に書かれている。