名 前
get_kernel_syms − 公 開 さ れ て い る カ ー ネ ル や モ ジ ュ ー ル の シ ン ボ ル の 取 得
書 式
#include <linux/module.h>
int get_kernel_syms(struct kernel_sym *table);
説 明
注 意 : こ の シ ス テ ム コ ー ル が 存 在 す る の は 、 カ ー ネ ル 2.6 よ り 前 の Linux だ け で あ る 。
get_kernel_syms() は 、 table が NULL の 場 合 、 問 い 合 わ せ で き る シ ン ボ ル の 数 を 返 す 。 NULL 以 外 の 場 合 、 以 下 の 構 造 体 の 列 (table) に 値 を 入 れ て 返 す 。
struct
kernel_sym {
unsigned long value;
char name[60]; }; シ ン ボ ル
の 中 に は 、
#module−name と い う
形 式 の 、 カ ー
ネ ル が 空 の 名
前 を 持 っ て い
る マ ジ ッ ク シ
ン ボ ル (magic symbol) が 散
在 し て い る 。
こ の 形 式 の シ
ン ボ ル に 対 応
す る 値 は モ ジ
ュ ー ル が ロ ー
ド さ れ た ア ド
レ ス と な る 。
個 々 の モ ジ ュ
ー ル か ら 公 開
(export) さ れ た シ ン
ボ ル は 、 マ ジ
ッ ク モ ジ ュ ー
ル タ グ の 後 ろ
に 置 か れ る 。
ま た 、 モ ジ ュ
ー ル は ロ ー ド
さ れ た 順 番 と
は 逆 順 で 返 さ
れ る 。
返 り 値
成 功 す る と 、 table に コ ピ ー さ れ た シ ン ボ ル 数 を 返 す 。 エ ラ ー の 場 合 、 −1 を 返 し 、 errno を 適 切 に 設 定 す る 。
エ ラ ー
返 る 可 能 性 が あ る エ ラ ー は 一 つ だ け で あ る 。
ENOSYS |
get_kernel_syms() が こ の バ ー ジ ョ ン の カ ー ネ ル で は サ ポ ー ト さ れ て い な い 。 |
バ ー ジ ョ ン
こ の シ ス テ ム コ ー ル が 存 在 す る の は カ ー ネ ル 2.4 ま で の Linux だ け で あ る 。 Linux 2.6 で は 削 除 さ れ た 。
準 拠
get_kernel_syms() は Linux 固 有 で あ る 。
バ グ
table 用 に 確 保 し た バ ッ フ ァ ー の 大 き さ を 伝 え る 方 法 が な い 。 プ ロ グ ラ ム が シ ン ボ ル テ ー ブ ル の 大 き さ を 問 い 合 わ せ た 後 に 、 カ ー ネ ル に シ ン ボ ル が 追 加 さ れ る と 、 メ モ リ ー の 内 容 が 破 壊 さ れ る こ と に な る 。 公 開 さ れ る シ ン ボ ル 名 の 長 さ が 59 文 字 に 制 限 さ れ て い る 。 こ れ ら の 制 限 が あ る の で 、 こ の シ ス テ ム コ ー ル を 使 う よ り は query_module(2) を 使 う の が 望 ま し い (現 在 で は query_module(2) 自 身 も そ の マ ニ ュ ア ル ペ ー ジ に 書 か れ て い る よ う に 他 の イ ン タ ー フ ェ ー ス を 使 う の が 望 ま し い と さ れ て い る )。
関 連 項 目
create_module(2), delete_module(2), init_module(2), query_module(2)
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。