GET_KERNEL_SYMS(2)

名前
get_kernel_syms - イクスポートされたカーネルやモジュールのシンボルを取得する

書式
#include <linux/module.h>

int get_kernel_syms(struct kernel_sym *table);

説明
table が NULL ならば get_kernel_syms は問い合わせ可能な シンボルの数を返す。そうでなければ、以下の構造体に値を入れて返す:

    struct kernel_sym
    {
      unsigned long value;
      char name[60];
    };

モジュール名のシンボルは #モジュール名 の形式をしたマジック・シンボルであり、 この形式のシンボルに結合した value はモジュールが読み込まれたアドレスである。 カーネル内部のシンボル表すために空文字列のマジック・シンボルが使用される。

それぞれのモジュールからイクスポートされたシンボルは、そのマジック・ シンボルに続く。モジュールは読み込まれたのと逆の順番で返される。

返り値
シンボルの数を返す。エラーの可能性はない。

関連項目
create_module(2), init_module(2), delete_module(2), query_module(2).

バグ
table のために確保したバッファーの大きさを伝える方法はない。 プログラムがシンボル・テーブルの大きさを問いあわせた後に、 カーネルにシンボルが追加された場合、メモリーが破壊される。

イクスポートされたシンボルの名前の長さは 59 に制限される。

これらの制限のため、query_module の方が好まれ、 このシステム・コールは軽んじられる。