OSDN Git Service

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