KSYMS(4)                  OpenBSD Programmer's Manual                 KSYMS(4)

NAME
     ksyms - kernel symbol table device

SYNOPSIS
     pseudo-device ksyms [count]

DESCRIPTION
     The /dev/ksyms device masquerades as an OpenBSD native executable (a.out
     or ELF, depending on the platform) with the symbols from the running ker-
     nel 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 ker-
     nel'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).

FILES
     /dev/ksyms

ERRORS
     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 (usually
                   because they were removed with strip(1)), or the kernel has
                   been compiled without a ``pseudo-device ksyms'' line.

SEE ALSO
     kvm(3), nlist(3)

HISTORY
     The /dev/ksyms device appeared in OpenBSD 2.4.

BUGS
     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.

OpenBSD 4.7                      May 31, 2007                                1
