QUERY_MODULE
Section: Linux Programmer's Manual (2)
Updated: 2017-09-15
Index
JM Home Page
roff page
 
名前
query_module - モジュールに関連する各種の情報をカーネルに問い合わせる
 
書式
#include <linux/module.h>
int query_module(const char *name, int which, void *buf,
                 size_t bufsize, size_t *ret);
注意: このシステムコールの宣言は glibc のヘッダーでは提供されていない。「注意」を参照。
 
説明
注意: このシステムコールが存在するのは、カーネル 2.6 より前の Linux だけである。
query_module()  は、ローダーブルモジュールに関する情報をカーネルに問い合わせる。 情報は buf
が指し示すバッファーに格納されて返される。 呼び出し元は buf のサイズを bufsize に指定しなければならない。
得られる情報の正確な意味とフォーマットは、 which でどの操作を指定するかによって異なる。 現在ロードされているモジュールを特定するために
name を必要とする操作があれば、 カーネル固有であることを示す NULL を指定できる操作もある。
which には以下の値を指定できる:
- 0
 - 
カーネルが query_module()  をサポートしている場合、成功を返す。 このシステムコールが利用可能かを調べるために使われる。
 - QM_MODULES
 - 
ロードされている全てのモジュールの名前を返す。 バッファーには、ヌル終端された文字列が順に入る。 返されるバッファー ret
にはモジュールの数が設定される。
 - QM_DEPS
 - 
指定されたモジュールが使用している全モジュールの名前を返す。 バッファーには、ヌル終端された文字列が順に入る。 返されるバッファー ret
にはモジュールの数が設定される。
 - QM_REFS
 - 
指定されたモジュールを使用している全モジュールの名前を返す。 これは QM_DEPS と逆の機能である。
バッファーには、ヌル終端された文字列が順に入る。 返されるバッファー ret にはモジュールの数が設定される。
 - QM_SYMBOLS
 - 
カーネルまたは指定されたモジュールがエクスポートしているシンボルと 値を返す。 バッファーのデータは、
以下の構造体の配列にヌル終端された文字列が続く形となる。
 - 
struct module_symbol {
    unsigned long value;
    unsigned long name;
};
 - 
name の値は、 buf の先頭からの文字列までのオフセット文字数である。 ret にはシンボルの数が設定される。
 - QM_INFO
 - 
指定されたモジュールに関する様々な情報を返す。 出力バッファーのフォーマットは以下の形式となる:
 - 
struct module_info {
    unsigned long address;
    unsigned long size;
    unsigned long flags;
};
 - 
address はそのモジュールが配置されているカーネル空間上のアドレス、 size はそのモジュールのバイト単位のサイズ、
flags は MOD_RUNNING, MOD_AUTOCLEAN 等のマスクであり、そのモジュールの現在の状態を示す (Linux
カーネルのソースファイル include/linux/module.h を参照)。 ret には module_info
構造体のサイズが設定される。
 
 
返り値
成功の場合 0 が返される。エラーの場合 -1 が返され、 errno に適切な値が設定される。
 
エラー
- EFAULT
 - 
name, buf, ret の少なくとも一つが、プログラムがアクセスできる アドレス空間の外部であった。
 - EINVAL
 - 
which が不正である。あるいは name が NULL だが (NULL は "カーネル" を示す)、 which
で指定された値との組み合わせは許可されていない。
 - ENOENT
 - 
name という名前のモジュールが存在しない。
 - ENOSPC
 - 
与えられたバッファーの大きさが小さすぎる。 ret には最小限必要なバッファーのサイズが設定される。
 - ENOSYS
 - 
query_module() はこのバージョンのカーネルではサポートされていない (例えば、カーネルのバージョンが 2.6 以降)。
 
 
バージョン
このシステムコールが存在するのはカーネル 2.4 までの Linux だけである。 Linux 2.6 では削除された。
 
準拠
query_module()  は Linux 固有である。
 
注意
以前 query_module() で得られた情報のいくつかは、 /proc/modules, /proc/kallsyms および
/sys/module ディレクトリ内のファイルから取得できる。
query_module() システムコールは glibc ではサポートされていない。 glibc ヘッダーでは宣言は提供されていないが、
歴史の紆余曲折を経て glibc はこのシステムコールに対する ABI を公開していない。
したがって、このシステムコールを利用するには、自分のコードの中で手動でインターフェースを宣言すればよい。 syscall(2)
を使ってシステムコールを起動できる。
 
関連項目
create_module(2), delete_module(2), get_kernel_syms(2),
init_module(2), lsmod(8), modinfo(8)
 
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/ に書かれている。
 Index
- 名前
 - 
 - 書式
 - 
 - 説明
 - 
 - 返り値
 - 
 - エラー
 - 
 - バージョン
 - 
 - 準拠
 - 
 - 注意
 - 
 - 関連項目
 - 
 - この文書について
 - 
 
This document was created by
man2html,
using the manual pages.
Time: 16:46:42 GMT, November 24, 2023