HP-UX Reference (11i v2 04/09) - 2 System Calls (vol 5)

g
getksym(2) getksym(2)
NAME
getksym - get information for a global kernel symbol
SYNOPSIS
#include <sys/types.h>
#include <sys/ksym.h>
#include <elf.h>
#include <elf_parisc.h> /* For STT_PARISC_MILLI on PA-RISC */
int getksym(
char *symname,
char *modname,
uint64_t *value ,
uint64_t *info
);
Remarks
getksym() is currently implemented as a macro.
DESCRIPTION
There are two ways that
getksym() can be used to retrieve kernel symbol information. As detailed
below, if symname is provided and value is set to zero, getksym() attempts to retrieve the value of the
symbol; if a non-zero value is provided, the associated symbol name is retrieved.
getksym(), given a symname, looks for a global (STB_GLOBAL or STB_WEAK) symbol of that name in
the symbol table of the static kernel and all currently loaded kernel modules. If it finds a match,
getksym() returns the value associated with that symbol (typically its address) in the space pointed to
by value , and the type of that symbol in the space pointed to by info.
The types returned are:
STT_NOTYPE unknown type
STT_FUNC text symbol (typically function)
STT_PARISC_MILLI
PA-RISC millicode function (PA-RISC only)
STT_OBJECT data symbol
The symbol name can be no more than
MAXSYMNMLEN characters. If modname is set to the name
(basename only) of a dynamically loaded module, then the search for the symbol name will only be in that
module. If modname is NULL, then the search order for the symbol name will be the static kernel fol-
lowed by each of the currently loaded modules in the order in which they were loaded. The module name
can be no more than MODMAXNAMELEN
characters.
If both a non-zero value and a symname are provided, the behavior of
getksym() is undefined. If a zero
value and an empty or NULL symname is provided, the behavior of getksym() is undefined.
If
getksym() is given a valid non-zero address in the statically configured kernel or one of the currently
loaded modules in the space pointed to by value , it will return, in the space pointed to by symname , the
name of the symbol whose value is the closest one less than or equal to the given value and, in space
pointed to by info , the difference between the address given and the value of the symbol found. The space
pointed to by symname must be at least MAXSYMNMLEN characters long.
RETURN VALUE
getksym() returns 0 upon successful completion. If an error occurs, a value of -1 is returned and
errno is set to indicate the error.
ERRORS
getksym() fails if one or more of the following are true:
[EINVAL] modname does not represent a currently loaded module.
[ENAMETOOLONG]
modname is greater than
MODMAXNAMELEN characters long, or symname is greater than
MAXSYMNMLEN characters long.
[ENOMATCH] The symbol name given is not found, or the value given is not a currently valid address.
HP-UX 11i Version 2: September 2004 1 Hewlett-Packard Company Section 299