.\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
.\" This file is distributed according to the GNU General Public License.
.\" %%%LICENSE_END
-.\" See the file COPYING in the top level source directory for details.
.\"
.\" 2006-02-09, some reformatting by Luc Van Oostenryck; some
.\" reformatting and rewordings by mtk
.\"
-.TH GET_KERNEL_SYMS 2 2012-10-18 "Linux" "Linux Programmer's Manual"
+.TH GET_KERNEL_SYMS 2 2017-09-15 "Linux" "Linux Programmer's Manual"
.SH NAME
get_kernel_syms \- retrieve exported kernel and module symbols
.SH SYNOPSIS
.nf
.B #include <linux/module.h>
-.sp
+.PP
.BI "int get_kernel_syms(struct kernel_sym *" table );
.fi
+.PP
+.IR Note :
+No declaration of this system call is provided in glibc headers; see NOTES.
.SH DESCRIPTION
.BR Note :
This system call is present only in kernels before Linux 2.6.
-
+.PP
If
.I table
is NULL,
.BR get_kernel_syms ()
returns the number of symbols available for query.
-Otherwise it fills in a table of structures:
+Otherwise, it fills in a table of structures:
.PP
.in +4n
-.nf
+.EX
struct kernel_sym {
unsigned long value;
char name[60];
};
-.fi
+.EE
.in
.PP
The symbols are interspersed with magic symbols of the form
.BR get_kernel_syms ()
is not supported in this version of the kernel.
.SH VERSIONS
-This system call is only present on Linux up until kernel 2.4;
+This system call is present on Linux only up until kernel 2.4;
it was removed in Linux 2.6.
.\" Removed in Linux 2.5.48
.SH CONFORMING TO
.BR get_kernel_syms ()
is Linux-specific.
+.SH NOTES
+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
+.BR syscall (2).
.SH BUGS
There is no way to indicate the size of the buffer allocated for
.IR table .