*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Tru64 Unix man pages -> knlist (3)              
Title
Content
Arch
Section
 

knlist(3)

Contents


NAME    [Toc]    [Back]

       knlist - look up symbols in the currently running kernel

SYNOPSIS    [Toc]    [Back]

       #include <nlist.h>

       int knlist(
               struct nlist namelist );

LIBRARY    [Toc]    [Back]

       Standard C Library (libc.a, libc.so)

PARAMETERS    [Toc]    [Back]

       On  input,  lists  the  symbol  names  for  which  you are
       requesting addresses. The namelist must be terminated with
       a  null  name  at  end. Without a terminating null name at
       end, knlist() cannot determine how many symbols are in the
       namelist and therefore may dump core.

              On  return, contains a list of symbol addresses (or
              0 if the attempt to find the addresses  was  unsuccessful).

DESCRIPTION    [Toc]    [Back]

       The  knlist() library routine looks up addresses of kernel
       symbols in the currently running kernel.  In  addition  to
       finding symbols associated with the kernel image, knlist()
       will also find symbols defined in dynamically loaded  subsystems.


       Communication  with  the  knlist() routine occurs using an
       array of type struct  nlist.  The  <nlist.h>  header  file
       declares that type as follows:

       struct nlist {
           char *n_name;
           unsigned long n_value;
           short  n_type;                /*  0 if not there, 1 if
       found */
           short reserved; };

       When your application calls knlist(), it passes the  names
       of symbols in the n_name field of the structure.

       For  each  symbol, the knlist() routine attempts to determine
 its current address in memory.  If  the  routine  can
       determine  the  address  of  the  symbol,  it returns that
       address in the n_value field, and it returns  one  (1)  in
       the  n_type  field.  If  the  routine cannot determine the
       address, it returns zero (0) in both the n_value field and
       the n_type field.

       For  BSD compatibility, the knlist() routine allows symbol
       names to be preceded by an underscore. If it does not find
       a  symbol  that  matches  the  name as specified, knlist()
       attempts to locate the symbol name with the leading underscore
 removed.





RETURN VALUES    [Toc]    [Back]

       The  knlist() routine returns zero on success. The routine
       returns -1 if it was unable to  connect  to  the  kloadsrv
       daemon.  In this case, the routine was unable to determine
       any of the requested addresses. The routine returns a positive
  integer if it successfully finds some addresses and
       fails to find others. The integer value indicates the number
 of addresses knlist() was unable to return.

       The  routine  returns  the negative value of EINVAL if the
       argument is bad.

EXAMPLES    [Toc]    [Back]

       The following example illustrates the use of the  knlist()
       routine:

       #include <stdio.h> #include <string.h> #include <stdlib.h>
       #include <nlist.h> main () {
          struct nlist   nl[3];
          int            retval, i;
          nl[0].n_name = (char *)malloc(10);
          nl[1].n_name = (char *)malloc(10);
          nl[2].n_name = ;

          /*******************************************************/
          /*  Store  names  of  kernel  symbols  in  the nl array
       */
          strcpy (nl[0].n_name, "ncpus");
          strcpy (nl[1].n_name, "lockmode");

          /*******************************************************/
          /*         Call        the        knlist        routine
       */
          retval = knlist(nl);

          /******************************************************/
          /*  Display  addresses if returned.  Otherwise, display
       */
          /*      the      appropriate       error       message.
       */
          if (retval < 0)
             printf ("No kernel symbol addresses returned.\n");
          else
             if (retval >= 0 )
                for (i=0; i<2; i++)
                    if (nl[i].n_type == 0)
                        printf ("Unable to return address of symbol
 %s\n",
                                nl[i].n_name);
                    else
                        printf ("The  address  of  symbol  %s  is
       %lx\n",
                                nl[i].n_name, nl[i].n_value);
          free (nl[0].n_name);
          free (nl[1].n_name); }

       This example tests the return value from the knlist() routine.
 If the routine returns an error status, a message is
       displayed to the application user. Otherwise, the application
 checks the status  of  each  kernel  symbol.  If  the
       knlist()  routine  was  unable  to  return an address, the
       application displays a message and the symbol name. If the
       knlist()  routine returns an address, the application displays
 the symbol name and address to the application user.

SEE ALSO    [Toc]    [Back]

      
      
       Routines: nlist(3)



                                                        knlist(3)
[ Back ]
 Similar pages
Name OS Title
kallsyms Linux Extract all kernel symbols for debugging
ksyms Linux display exported kernel symbols.
current_thread Tru64 General: Is a pointer to the currently running kernel thread
get_kernel_syms Linux retrieve exported kernel and module symbols
current_task Tru64 General: Returns a pointer to the task structure associated with the currently running kernel thread
optionalsym IRIX transform ELF symbols to optional symbols
aries HP-UX family running HP-UX
uptime Linux Tell how long the system has been running.
c++filt OpenBSD demangle C++ symbols
c++filt NetBSD demangle C++ symbols
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service