Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_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
              ロードされている全てのモジュールの名前を返す。 バッファーには、ヌル終端された文字列
              が順に入る。 返されるバッファー 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  はそのモ
              ジュールのバイト単位のサイズ、 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 ディレクトリ内のファイルから取得できる。

       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/ に書かれている。