-
Notifications
You must be signed in to change notification settings - Fork 0
/
get_kernel_syms.html
202 lines (148 loc) · 5.23 KB
/
get_kernel_syms.html
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
<!-- Creator : groff version 1.22.4 -->
<!-- CreationDate: Wed Jan 29 11:26:25 2020 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="generator" content="groff -Thtml, see www.gnu.org">
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<meta name="Content-Style" content="text/css">
<style type="text/css">
p { margin-top: 0; margin-bottom: 0; vertical-align: top }
pre { margin-top: 0; margin-bottom: 0; vertical-align: top }
table { margin-top: 0; margin-bottom: 0; vertical-align: top }
h1 { text-align: center }
</style>
<title>GET_KERNEL_SYMS</title>
</head>
<body>
<h1 align="center">GET_KERNEL_SYMS</h1>
<a href="#NAME">NAME</a><br>
<a href="#SYNOPSIS">SYNOPSIS</a><br>
<a href="#DESCRIPTION">DESCRIPTION</a><br>
<a href="#RETURN VALUE">RETURN VALUE</a><br>
<a href="#ERRORS">ERRORS</a><br>
<a href="#VERSIONS">VERSIONS</a><br>
<a href="#CONFORMING TO">CONFORMING TO</a><br>
<a href="#NOTES">NOTES</a><br>
<a href="#BUGS">BUGS</a><br>
<a href="#SEE ALSO">SEE ALSO</a><br>
<a href="#COLOPHON">COLOPHON</a><br>
<hr>
<h2>NAME
<a name="NAME"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">get_kernel_syms
- retrieve exported kernel and module symbols</p>
<h2>SYNOPSIS
<a name="SYNOPSIS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>#include
<linux/module.h></b></p>
<p style="margin-left:11%; margin-top: 1em"><b>int
get_kernel_syms(struct kernel_sym
*</b><i>table</i><b>);</b></p>
<p style="margin-left:11%; margin-top: 1em"><i>Note</i>: No
declaration of this system call is provided in glibc
headers; see NOTES.</p>
<h2>DESCRIPTION
<a name="DESCRIPTION"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>Note</b>:
This system call is present only in kernels before Linux
2.6.</p>
<p style="margin-left:11%; margin-top: 1em">If <i>table</i>
is NULL, <b>get_kernel_syms</b>() returns the number of
symbols available for query. Otherwise, it fills in a table
of structures:</p>
<p style="margin-left:17%; margin-top: 1em">struct
kernel_sym { <br>
unsigned long value; <br>
char name[60]; <br>
};</p>
<p style="margin-left:11%; margin-top: 1em">The symbols are
interspersed with magic symbols of the form
<b>#</b><i>module-name</i> with the kernel having an empty
name. The value associated with a symbol of this form is the
address at which the module is loaded.</p>
<p style="margin-left:11%; margin-top: 1em">The symbols
exported from each module follow their magic module tag and
the modules are returned in the reverse of the order in
which they were loaded.</p>
<h2>RETURN VALUE
<a name="RETURN VALUE"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">On success,
returns the number of symbols copied to <i>table</i>. On
error, -1 is returned and <i>errno</i> is set
appropriately.</p>
<h2>ERRORS
<a name="ERRORS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">There is only
one possible error return:</p>
<table width="100%" border="0" rules="none" frame="void"
cellspacing="0" cellpadding="0">
<tr valign="top" align="left">
<td width="11%"></td>
<td width="9%">
<p><b>ENOSYS</b></p></td>
<td width="2%"></td>
<td width="78%">
<p><b>get_kernel_syms</b>() is not supported in this
version of the kernel.</p></td></tr>
</table>
<h2>VERSIONS
<a name="VERSIONS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">This system
call is present on Linux only up until kernel 2.4; it was
removed in Linux 2.6.</p>
<h2>CONFORMING TO
<a name="CONFORMING TO"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>get_kernel_syms</b>()
is Linux-specific.</p>
<h2>NOTES
<a name="NOTES"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">This obsolete
system call is not supported by glibc. No declaration is
provided in glibc headers, but, through a quirk of history,
glibc versions before 2.23 did export an ABI for this system
call. Therefore, in order to employ this system call, it was
sufficient to manually declare the interface in your code;
alternatively, you could invoke the system call using
<b>syscall</b>(2).</p>
<h2>BUGS
<a name="BUGS"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">There is no way
to indicate the size of the buffer allocated for
<i>table</i>. If symbols have been added to the kernel since
the program queried for the symbol table size, memory will
be corrupted.</p>
<p style="margin-left:11%; margin-top: 1em">The length of
exported symbol names is limited to 59 characters.</p>
<p style="margin-left:11%; margin-top: 1em">Because of
these limitations, this system call is deprecated in favor
of <b>query_module</b>(2) (which is itself nowadays
deprecated in favor of other interfaces described on its
manual page).</p>
<h2>SEE ALSO
<a name="SEE ALSO"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em"><b>create_module</b>(2),
<b>delete_module</b>(2), <b>init_module</b>(2),
<b>query_module</b>(2)</p>
<h2>COLOPHON
<a name="COLOPHON"></a>
</h2>
<p style="margin-left:11%; margin-top: 1em">This page is
part of release 5.02 of the Linux <i>man-pages</i> project.
A description of the project, information about reporting
bugs, and the latest version of this page, can be found at
https://www.kernel.org/doc/man-pages/.</p>
<hr>
</body>
</html>