Manpages

名 前

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 プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。