名 前
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 と い う 名 前 の モ ジ ュ ー ル が 存 在 し な い 。
与 え ら
れ た バ ッ フ ァ
ー の 大 き さ が
小 さ す ぎ る 。
ret に は 最 小 限
必 要 な バ ッ フ
ァ ー の サ イ ズ
が 設 定 さ れ る
。 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/ に 書 か れ て い る 。 |