QUERY_MODULE

Section: Linux Programmer's Manual (2)
Updated: 2017-09-15
Index JM Home 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/ に書かれている。

関連キーワード

カーネル   フォーマット   バッファ   module   終端   セット   long   query   関連   size   ロード   成功   シンボル   構造体   struct   info   空間   アドレス   各種   Kernel   時代   modutils   パッケージ   所収   マニュアル

Linux マニュアル 一覧

関連するコマンド・関数

create_module.2   get_kernel_syms.2   delete_module.2   finit_module.2   init_module.2   afs_syscall.2
 

Index

名前
書式
説明
返り値
エラー
バージョン
準拠
注意
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:38:57 GMT, October 11, 2026