KGDB_BREAKPOINT(9) Kernel Debugger Internals KGDB_BREAKPOINT(9)NAME
kgdb_breakpoint - compiled in breakpoint
SYNOPSIS
void kgdb_breakpoint(void);
ARGUMENTS
void
no arguments
DESCRIPTION
This will be implemented as a static inline per architecture. This function is called by the kgdb core to execute an architecture specific
trap to cause kgdb to enter the exception processing.
AUTHOR
Jason Wessel <jason.wessel@windriver.com>
Author.
COPYRIGHT Kernel Hackers Manual 3.10 June 2014 KGDB_BREAKPOINT(9)
Check Out this Related Man Page
IPKDB(9) BSD 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 argument 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 ipkd-
bregs. 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 during 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 additional parameters that allow it to access the devices registers, hopefully using
bus_space(9) methods. In the ipkdb_if structure, the attach routine 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)BSD September 4, 2009 BSD