trusty (2) query_module.2.gz

Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all bug

名前

       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
              ロードされている全てのモジュールの名前を返す。 バッファには、NULL 終端された文字列が順に入る。  返
              されるバッファ ret にはモジュールの数が設定される。

       QM_DEPS
              指定されたモジュールが使用している全モジュールの名前を返す。 バッファには、NULL 終端された文字列が
              順に入る。 返されるバッファ ret にはモジュールの数が設定される。

       QM_REFS
              指定されたモジュールを使用している全モジュールの名前を返す。  これは  QM_DEPS   と逆の機能である。
              バッファには、NULL  終端された文字列が順に入る。 返されるバッファ ret にはモジュールの数が設定され
              る。

       QM_SYMBOLS
              カーネルまたは指定されたモジュールがエクスポートしているシンボルと 値を返す。 バッファのデータは、
              以下の構造体の配列に NULL 終端された文字列が続く形となる。

                  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 はそのモジュールのバイト単
              位のサイズ、  flagsMOD_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 ディレ
       クトリ内のファイルから取得できる。

       glibc  はこのシステムコールに対するラッパー関数を提供していない。おそらくないと思うが、古いカーネルでこの
       システムコールを使いたい場合は syscall(2) を使うこと。

関連項目

       create_module(2), delete_module(2), get_kernel_syms(2), init_module(2), lsmod(8), modinfo(8)

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 3.54 の一部 である。プロジェクトの説明とバグ報告
       に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。