GET_KERNEL_SYMS

Section: Linux Programmer's Manual (2)
Updated: 2017-09-15
Index JM Home Page
 

名前

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

書式

#include <linux/module.h>

int get_kernel_syms(struct kernel_sym *table);

注意: このシステムコールの宣言は glibc のヘッダーでは提供されていない。「注意」を参照。  

説明

注意: このシステムコールが存在するのは、カーネル 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 固有である。  

注意

この廃止されたシステムコールは glibc ではサポートされていない。 glibc ヘッダーでは宣言は提供されていないが、紆余曲折があり、 バージョン 2.23 より前の glibc ではこのシステムコールに対する ABI が公開されていた。そのため、このシステムコールを利用するには、自分のコードの中で手動でインターフェースを宣言すればよかった。 syscall(2) を使ってシステムコールを起動できた。  

バグ

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

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

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

関連項目

create_module(2), delete_module(2), init_module(2), query_module(2)  

この文書について

この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。

関連キーワード

シンボル   kernel   エクスポート   カーネル   syms   マジック   ロード   制限   Kernel   時代   modutils   パッケージ   所収   マニュアル   Project   構造体   struct   long   散在   アドレ   タグ   順番   逆順   返り値   復帰

Linux マニュアル 一覧

関連するコマンド・関数

query_module.2   create_module.2   init_module.2   delete_module.2   ksyms.8   vdso.7
 

Index

名前
書式
説明
返り値
エラー
バージョン
準拠
注意
バグ
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:38:57 GMT, October 11, 2026