IPKDB(9)               NetBSD Kernel Developer's Manual               IPKDB(9)

NAME
     ipkdb -- machine-dependent interface to ipkdb

SYNOPSIS
     #include <ipkdb/ipkdb.h>

     void
     ipkdb_init(void);

     void
     ipkdb_connect(int when);

     int
     ipkdbcmds(void);

     void
     ipkdbinit(void);

     void
     ipkdb_trap(void);

     int
     ipkdb_poll(void);

     int
     ipkdbif_init(struct ipkdb_if *kip);

     int
     ipkdbfbyte(u_char *c);

     int
     ipkdbsbyte(u_char *c, int i);

DESCRIPTION
     The machine-dependent code must support this interface for operation with
     ipkdb(4).

     During system bootstrap, machine-dependent code must invoke ipkdb_init().
     If the kernel is booted with RB_KDB set in boothowto (see boothowto(9)),
     ipkdb(4) is enabled by invoking ipkdb_connect(), setting the when argu-
     ment to 0.

     ipkdbcmds() is invoked by machine-dependent code when the trap mechanism
     determines that the debugger should be entered, i.e., on a single step or
     breakpoint interrupt from kernel code.  The trapping mechanism should
     already have stored the registers into the global area ipkdbregs.  The
     layout of this area must be the same as that expected by gdb(1).  Valid
     return values are:

           IPKDB_CMD_RUN     user wants to continue
           IPKDB_CMD_STEP    user wants to do single stepping
           IPKDB_CMD_EXIT    user has detached from debugging

FUNCTIONS
     The machine-dependent code must provide the following functions for the
     machine-independent code.
     ipkdbinit()          This routine gets called when the debugger should be
                          entered for the first time.
     ipkdb_trap()         This routine is part of the trap handler.  Whenever
                          a trap happens (e.g., when hitting a breakpoint dur-
                          ing debugging), ipkdb_trap() decides if the Debugger
                          needs to be called.  If there are other ways to
                          decide that, it's not necessary to provide an
                          ipkdb_trap() implementation.
     ipkdb_poll()         This routine gets called after a panic to check for
                          a key press by the user.  If implemented it allows
                          the user to press any key on the console to do the
                          automatic reboot after a panic.  Otherwise the
                          debugging interface will wait forever for some
                          remote debugger to attach in case of a panic.
     ipkdbif_init(kip)    In order to be able to find the debugging interface,
                          the network driver must invoke ipkdbif_init() with
                          kip specifying a struct ipkdb_if plus some addi-
                          tional parameters that allow it to access the
                          devices registers, hopefully using bus_space(9)
                          methods.  In the ipkdb_if structure, the attach rou-
                          tine must initialize the following fields:

                                myenetaddr  fill this with the own ethernet
                                            address of the device/machine
                                flags       mark at least IPKDB_MYHW here
                                name        name of the device, only used for
                                            a message
                                start       routine called every time ipkdb is
                                            entered
                                leave       routine called every time ipkdb is
                                            left
                                receive     routine called to receive a packet
                                send        routine called to send a packet

                          Additional fields that may be set are:

                                myinetaddr  fill this with the own internet
                                            address, and mark IPKDB_MYIP in
                                            flags
                                port        may be used as a pointer to some
                                            device
     ipkdbfbyte(c)        This routine should fetch a byte from address c.  It
                          must not enter any trap handling code, but instead
                          return -1 on inability to access the data.
     ipkdbsbyte(c, i)     This routine should set the byte pointed to by c to
                          the value given as i.  The routine must not enter
                          any trap handling code.  Furthermore it should reset
                          the modification bit in the relevant page table
                          entry to the value before the store.

SEE ALSO
     ipkdb(4), boothowto(9)

NetBSD 6.0.1                   September 4, 2009                  NetBSD 6.0.1

You can also request any man page by name and (optionally) by section:

Command: 
Section: 
Architecture: 
Collection: 
 

Use the DEFAULT collection to view manual pages for third-party software.


©1994 Man-cgi 1.15, Panagiotis Christias <christia@softlab.ntua.gr>
©1996-2014 Modified for NetBSD by Kimmo Suominen