/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.
sys/ksyms.h
>.
The (third) argument to the ioctl(2) should be a pointer to the type indicated.
KIOCGSIZE
(int)
KIOCGVALUE
(struct
ksyms_gsymbol)
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)
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.
/dev/ksyms
The ksyms driver first appeared in NetBSD2.0.
/dev/ksyms
is open.