KSYMS(4) BSD Kernel Interfaces Manual KSYMS(4)
ksyms -- kernel symbol table device
pseudo-device ksyms [count]
The /dev/ksyms device masquerades as an OpenBSD native executable with
the symbols from the running kernel as its symbol segment. Use of
/dev/ksyms requires that the boot loader preserve the kernel symbols and
place them at the end of the kernel's address space.
The /dev/ksyms device is used to look up the symbol table name list from
the running kernel. Because it represents the running kernel it is guar-
anteed to always be up to date even if the kernel file has been changed
(or is even non-existent). It is most useful when used in conjunction
with nlist(3) or the kvm(3) routines (note that kvm_open(3) and
kvm_openfiles(3) will try /dev/ksyms automatically if the first parameter
to them is the NULL pointer).
An open of /dev/ksyms will fail if:
[EPERM] An open was attempted with write permissions.
[ENXIO] No kernel symbols were saved by the boot loader (usu-
ally because they were removed with strip(1)), or the
kernel has been compiled without a ``pseudo-device
The /dev/ksyms device appeared in OpenBSD 2.4.
It is not possible to mmap(2) /dev/ksyms because the boot loader does not
load the symbol table onto a page boundary (so it is not page aligned).
If all the boot loaders were fixed, mmap(2) support would be trivial.
BSD March 28, 2017 BSD