QUERY_MODULE(2)

名前
query_module - カーネルに各種のモジュールに関連する情報を要求する

書式
#include <linux/module.h>

int query_module(const char *name, int which,
void *buf, size_t bufsize, size_t *ret);

説明
query_module はカーネルにローダブル・モジュールに関連した情報を要求する。 その情報の正確な性質とその形式は which 副関数に異存している。 対象のローダブル・モジュールを指定するために name が必要な 関数もあるし、name に NULL を指定してもカーネルが適当に 扱う関数もある。

  WHICH の値

0   常に成功を返す。システム・コールが使用できるかどうか確認する。

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 などのマスクであり、 現在のモジュールの状態を示している。ret には module_info 構造体の大きさが設定される。

返り値
成功した場合はゼロが返される。エラーの場合は -1 が返され errno が 適切に設定される。

エラー

ENOENT
    その name のモジュールが存在しない。

EINVAL
    which が不正であるか、name が不適切なカーネルの 副関数を指定している。

ENOSPC
    提供されたバッファーが小さ過ぎる。ret には必要なバッファー の最低サイズが設定される。

EFAULT
    少なくとも name, buf, ret のどれかが、 プログラムのアクセス可能なアドレス空間の外部にある。

関連項目
create_module(2), init_module(2), delete_module(2).