1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
.\" Copyright (C) 1996 Free Software Foundation, Inc.
.\"
.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
.\" This file is distributed according to the GNU General Public License.
.\" %%%LICENSE_END
.\"
.\" 2006-02-09, some reformatting by Luc Van Oostenryck; some
.\" reformatting and rewordings by mtk
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.\"
.\" Japanese Version Copyright (c) 2006 Akihiro MOTOKI all rights reserved.
.\" Translated 2006-07-31, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
.\" Updated 2013-05-01, Akihiro MOTOKI <amotoki@gmail.com>, LDP v3.51
.\" Updated 2013-05-06, Akihiro MOTOKI <amotoki@gmail.com>
.\"
.TH GET_KERNEL_SYMS 2 2017\-09\-15 Linux "Linux Programmer's Manual"
.SH 名前
get_kernel_syms \- 公開されているカーネルやモジュールのシンボルの取得
.SH 書式
.nf
\fB#include <linux/module.h>\fP
.PP
\fBint get_kernel_syms(struct kernel_sym *\fP\fItable\fP\fB);\fP
.fi
.PP
\fI注意\fP: このシステムコールの宣言は glibc のヘッダーでは提供されていない。「注意」を参照。
.SH 説明
\fB注意\fP: このシステムコールが存在するのは、カーネル 2.6 より前の Linux だけである。
.PP
\fBget_kernel_syms\fP() は、 \fItable\fP が NULL の場合、 問い合わせできるシンボルの数を返す。 NULL
以外の場合、以下の構造体の列 (table) に値を入れて返す。
.PP
.in +4n
.EX
struct kernel_sym {
unsigned long value;
char name[60];
};
.EE
.in
.PP
シンボルの中には、 \fB#\fP\fImodule\-name\fP という形式の、カーネルが空の名前を持っているマジックシンボル (magic symbol)
が散在している。この形式のシンボルに対応する値は モジュールがロードされたアドレスとなる。
.PP
個々のモジュールから公開 (export) されたシンボルは、マジックモジュールタグ
の後ろに置かれる。また、モジュールはロードされた順番とは逆順で返される。
.SH 返り値
成功すると、 \fItable\fP にコピーされたシンボル数を返す。 エラーの場合、\-1 を返し、 \fIerrno\fP を適切に設定する。
.SH エラー
返る可能性があるエラーは一つだけである。
.TP
\fBENOSYS\fP
\fBget_kernel_syms\fP() がこのバージョンのカーネルではサポートされていない。
.SH バージョン
.\" Removed in Linux 2.5.48
このシステムコールが存在するのはカーネル 2.4 までの Linux だけである。 Linux 2.6 では削除された。
.SH 準拠
\fBget_kernel_syms\fP() は Linux 固有である。
.SH 注意
この廃止されたシステムコールは glibc ではサポートされていない。 glibc ヘッダーでは宣言は提供されていないが、紆余曲折があり、 バージョン
2.23 より前の glibc ではこのシステムコールに対する ABI
が公開されていた。そのため、このシステムコールを利用するには、自分のコードの中で手動でインターフェースを宣言すればよかった。 \fBsyscall\fP(2)
を使ってシステムコールを起動できた。
.SH バグ
\fItable\fP 用に確保したバッファーの大きさを伝える方法がない。 プログラムがシンボルテーブルの大きさを問い合わせた後に、カーネルに
シンボルが追加されると、メモリーの内容が破壊されることになる。
.PP
公開されるシンボル名の長さが 59 文字に制限されている。
.PP
これらの制限があるので、このシステムコールを使うよりは \fBquery_module\fP(2) を使うのが望ましい (現在では
\fBquery_module\fP(2) 自身もそのマニュアルページに書かれているように 他のインターフェースを使うのが望ましいとされている)。
.SH 関連項目
\fBcreate_module\fP(2), \fBdelete_module\fP(2), \fBinit_module\fP(2),
\fBquery_module\fP(2)
.SH この文書について
この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は
\%https://www.kernel.org/doc/man\-pages/ に書かれている。
|