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

NAME
     ksyms - kernel symbol table device

SYNOPSIS
     pseudo-device ksyms 1

DESCRIPTION
     The /dev/ksyms device masquerades as an a.out executable with the symbols
     from the running kernel as its symbol segment.  Use of /dev/ksyms re-
     quires that the boot loader preserve the kernel symbols and place them at
     the end of the kernel's address space.  Any port that is capable of using
     the DDB debugger does this, even if DDB is not configured into the ker-
     nel.

     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_open-
     files(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)).

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 2.9                     August 24, 1998                              1
