kazmax - Linux で自宅サーバー

get_kernel_syms - システムコールの説明 - Linux コマンド集 一覧表

  1. 名前
  2. 書式
  3. 説明
  4. 返り値
  5. 準拠
  6. バグ
  7. 注意
  8. 関連項目

名前

get_kernel_syms - 公開されているカーネルやモジュールのシンボルの取得

書式

#include <linux/module.h>

int get_kernel_syms(struct kernel_sym *table);

説明

get_kernel_syms ()は、 table が NULL の場合、 問い合わせできるシンボルの数を返す。 NULL 以外の場合、以下の構造体の列 (table) に値を入れて返す。


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

シンボルの中には、 # module-name という形式の、カーネルが空の名前を持っているマジックシンボル (magic symbol) が散在している。この形式のシンボルに対応する値は モジュールがロードされたアドレスとなる。

個々のモジュールから公開 (export) されたシンボルは、マジックモジュールタグ の後ろに置かれる。また、モジュールはロードされた順番とは逆順で返される。

返り値

table にコピーされたシンボル数を返す。 エラーで返ることはない。

準拠

get_kernel_syms ()は Linux 固有である。

バグ

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

公開されるシンボル名の長さが 59 文字に制限されている。

これらの制限があるので、このシステムコールを使うよりは   query_module (2) を使うのが望ましい (現在では   query_module (2) 自身もそのマニュアルページに書かれているように 他のインタフェースを使うのが望ましいとされている)。

注意

このシステムコールが存在するのはカーネル 2.4 までの Linux だけである。 Linux 2.6 では削除された。

関連項目