NAME
ksyms —
kernel symbol table
interface
SYNOPSIS
pseudo-device ksyms
DESCRIPTION
The
/dev/ksyms character device provides a read-only interface
to the current kernel symbol table. It can be accessed either as a sequential
file, where it looks like an executable file but with zero-sized text and data
segments, or via
ioctl(2).
/dev/ksyms represents the symbol table at the time when the
device is opened, and may not change until it is closed.
The in-kernel symbol manager is designed to be able to handle any type of symbol
table. However, only
elf(5) symbol
tables are currently dealt with.
IOCTLS
The
ioctl(2) command codes below
are defined in
<sys/ksyms.h>.
The (third) argument to the
ioctl(2) should be a pointer to
the type indicated.
-
-
KIOCGSIZE
(int)
- Returns the total size of the current symbol table. This
should be used when allocating a buffer to read in the whole symbol table
to memory.
-
-
KIOCGVALUE
(struct ksyms_gsymbol)
- Returns the value for the given symbol name in a
symtab-independent fashion.
struct ksyms_gsymbol {
const char *kg_name;
unsigned long *kg_value;
};
The struct element kg_name should be set to the name
of the requested value, and the address that
kg_value points to will receive the symbol
value.
-
-
KIOCGSYMBOL
(struct ksyms_gsymbol)
- Returns the complete symbol for the given symbol name.
struct ksyms_gsymbol {
const char *kg_name;
void *kg_sym;
};
The struct element kg_name should be set to the name
of the requested symbol, and the found symbol will be written to the
kg_sym address. It is the callers responsibility to
ensure that enough space for the symbol is allocated.
FILES
-
-
- /dev/ksyms
-
SEE ALSO
ioctl(2),
nlist(3),
elf(5)
HISTORY
A
ksyms device exists in many different operating systems.
This implementation is modelled in function after Solaris
ksyms. This
ksyms driver was written by
Anders Magnusson for
NetBSD.
The
ksyms driver first appeared in
NetBSD
2.0.