summaryrefslogtreecommitdiffstats
path: root/sys/ddb/ddb.h
Commit message (Collapse)AuthorAgeFilesLines
* Simplify the pager support in DDB. Allowing different db commands tojhb2006-07-121-6/+1
| | | | | | | | | | | | | | | | install custom pager functions didn't actually happen in practice (they all just used the simple pager and passed in a local quit pointer). So, just hardcode the simple pager as the only pager and make it set a global db_pager_quit flag that db commands can check when the user hits 'q' (or a suitable variant) at the pager prompt. Also, now that it's easy to do so, enable paging by default for all ddb commands. Any command that wishes to honor the quit flag can do so by checking db_pager_quit. Note that the pager can also be effectively disabled by setting $lines to 0. Other fixes: - 'show idt' on i386 and pc98 now actually checks the quit flag and terminates early. - 'show intr' now actually checks the quit flag and terminates early.
* Add two helper functions: db_lookup_thread() and db_lookup_proc(). Theyjhb2006-04-251-0/+2
| | | | | | | | | | | | | | | | take the addr value passed to a ddb command and attempt to use it to lookup a struct thread * or struct proc *, respectively. Each function first reparses the passed in value as if it was an ID entered in base 10. For threads the ID is treated as a thread ID, for proceses the ID is treated as a PID. If a thread or proc matching the ID is found, it is returned. For db_lookup_thread(), if the check_pid argument is true and it didn't find a thread with a matching thread ID, it will treat the ID as a PID and look for a matching process. If it finds one it returns the first thread in the process. If none of the ID lookups succeeded, then the functions assume that the passed in address is a thread or proc pointer, respectively. This allows one to use tids, pids, or structure pointers interchangeably in ddb functions that want to lookup threads or processes if desired.
* Clean up the way we handle auxiliary commands for a given ddb commandjhb2006-03-071-8/+19
| | | | | | | | | | | | | | | | table. Previously, the ddb code knew of each linker set of auxiliary commands and which explicit command list they were tied to. These changes add a simple command_table struct that contains both the static list of commands and the pointers for any auxiliary linker set of additional commands. This also makes it possible for other arbitrary command tables to be defined in other parts of the kernel w/o having to edit ddb itself. The DB_SET macro has also been trimmed down to just creating an entry in a linker set. A new DB_FUNC macro does what the old DB_SET did which is to not only add an entry to the linker set but also to include a function prototype for the function being added. With these changes, it's now also possible to create aliases for ddb functions using DB_SET() directly if desired.
* Move the prototypes of db_md_set_watchpoint(), db_md_clr_watchpoint()marcel2005-09-101-0/+3
| | | | and db_md_list_watchpoints() to ddb/ddb.h.
* Implement functions calls from within DDB on ia64. On ia64 a functionmarcel2005-07-021-0/+10
| | | | | | | | | | | | | | | | | | | | | | | pointer doesn't point to the first instruction of that function, but rather to a descriptor. The descriptor has the address of the first instruction, as well as the value of the global pointer. The symbol table doesn't know anything about descriptors, so if you lookup the name of a function you get the address of the first instruction. The cast from the address, which is the result of the symbol lookup, to a function pointer as is done in db_fncall is therefore invalid. Abstract this detail behind the DB_CALL macro. By default DB_CALL is defined as db_fncall_generic, which yields the old behaviour. On ia64 the macro is defined as db_fncall_ia64, in which a descriptor is constructed to yield a valid function pointer. While here, introduce DB_MAXARGS. DB_MAXARGS replaces the existing (local) MAXARGS. The DB_MAXARGS macro can be defined by platforms to create a convenient maximum. By default this will be the legacy 10. On ia64 we define this macro to be 8, for 8 is the maximum number of arguments that can be passed in registers. This avoids having to implement spilling of arguments on the memory stack. Approved by: re (dwhite)
* Don't enter the debugger if KDB_UNATTENDED is set or ifps2005-04-201-1/+0
| | | | | | debug.debugger_on_panic=0. MFC after: 2 weeks
* - Change the ddb paging "support" to use a variable (db_lines_per_page) tojhb2004-11-011-2/+1
| | | | | | | | | | | | | | | | | control the number of lines per page rather than a constant. The variable can be examined and changed in ddb as '$lines'. Setting the variable to 0 will effectively turn off paging. - Change db_putchar() to force out pending whitespace before outputting newlines and carriage returns so that one can rub out content on the current line via '\r \r' type strings. - Change the simple pager to rub out the --More-- prompt explicitly when the routine exits. - Add some aliases to the simple pager to make it more compatible with more(1): 'e' and 'j' do a single line. 'd' does half a page, and 'f' does a full page. MFC after: 1 month Inspired by: kris
* Unify db_stack_trace_cmd(). All it did was look up the thread givenmarcel2004-07-211-1/+0
| | | | | | | | | | | | | | | the thread ID and call db_trace_thread(). Since arm has all the logic in db_stack_trace_cmd(), rename the new DB_COMMAND function to db_stack_trace to avoid conflicts on arm. While here, have db_stack_trace parse its own arguments so that we can use a more natural radix for IDs. If the ID is not a thread ID, or more precisely when no thread exists with the ID, try if there's a process with that ID and return the first thread in it. This makes it easier to print stack traces from the ps output. requested by: rwatson@ tested on: amd64, i386, ia64
* Mega update for the KDB framework: turn DDB into a KDB backend.marcel2004-07-101-33/+9
| | | | | | | | | | | | | | | | Most of the changes are a direct result of adding thread awareness. Typically, DDB_REGS is gone. All registers are taken from the trapframe and backtraces use the PCB based contexts. DDB_REGS was defined to be a trapframe on all platforms anyway. Thread awareness introduces the following new commands: thread X switch to thread X (where X is the TID), show threads list all threads. The backtrace code has been made more flexible so that one can create backtraces for any thread by giving the thread ID as an argument to trace. With this change, ia64 has support for breakpoints.
* Add a one-shot callout facility to db_printf() that executes the registeredjhb2003-07-311-0/+8
| | | | | | | | | callout when a specified number of lines have been output. This can be used to implement pagers for ddb commands that output a lot of text. A simple paging function is included that automatically rearms itself when fired. Reviewed by: bde, julian
* Change "dev_t gdbdev" to "void *gdb_arg", some possible paths for GDBphk2003-02-161-1/+1
| | | | will not have a dev_t.
* Revert previous and move the prototype for db_alt_break to ddb.h.jake2002-12-311-0/+3
| | | | Requested by: bde (I think)
* Add code to ddb to allow backtracing an arbitrary thread.julian2002-12-281-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | (show thread {address}) Remove the IDLE kse state and replace it with a change in the way threads sahre KSEs. Every KSE now has a thread, which is considered its "owner" however a KSE may also be lent to other threads in the same group to allow completion of in-kernel work. n this case the owner remains the same and the KSE will revert to the owner when the other work has been completed. All creations of upcalls etc. is now done from kse_reassign() which in turn is called from mi_switch or thread_exit(). This means that special code can be removed from msleep() and cv_wait(). kse_release() does not leave a KSE with no thread any more but converts the existing thread into teh KSE's owner, and sets it up for doing an upcall. It is just inhibitted from being scheduled until there is some reason to do an upcall. Remove all trace of the kse_idle queue since it is no-longer needed. "Idle" KSEs are now on the loanable queue.
* Constify to kill some warnings.markm2002-09-211-1/+1
|
* Implement db_print_backtrace() if DDB is compiled into the kernel. Thisjhb2002-09-191-0/+3
| | | | | | | | | | | | | | | | | | | | MD function is just a wrapper around db_stack_trace_cmd() that prints out a backtrace of curthread. Currently, this function is only implemented on i386 and alpha (and the alpha version isn't quite tested yet, will do that in a bit). Other changes: - For i386, fix a bug in the raw frame address case. The eip we extract from the passed in frame address does not match the frame we received. Thus, instead of printing a bogus frame with the wrong eip, go ahead and advance frame down to the same frame as the eip we are using. - For alpha, attempt to add a way of doing a raw trace for alpha. Instead of passing a frame address in 'addr', pass in a pointer to a structure containing PC and KSP and use those to start the backtrace. The alpha db_print_backtrace() uses asm to read in the current PC and KSP values into such a request. Tested on: i386 Requested by: many
* Allow DB_SET() to set all fields in the ddb command structure. Thisgibbs2002-06-051-5/+5
| | | | | allows external ddb commands to do anyting an internal command can do, including non-standard argument parsing if desired.
* Fixed some style bugs in the removal of __P(()). Continuation linesbde2002-03-231-2/+2
| | | | | were not outdented to preserve non-KNF lining up of code with parentheses. Switch to KNF formatting.
* Remove __P.alfred2002-03-201-24/+24
|
* Add 'hwatch' and 'dhwatch' ddb commands analogous to 'watch' andbsd2001-07-111-0/+2
| | | | | | | | | | 'dwatch'. The new commands install hardware watchpoints if supported by the architecture and if there are enough registers to cover the desired memory area. No objection by: audit@, hackers@ MFC after: 2 weeks
* Add a new mechanism, cndbctl(), to tell the console driver thatyokota2000-01-111-1/+2
| | | | | | | | | | | | | | | | | | | | | ddb is entered. Don't refer to `in_Debugger' to see if we are in the debugger. (The variable used to be static in Debugger() and wasn't updated if ddb is entered via traps and panic anyway.) - Don't refer to `in_Debugger'. - Add `db_active' to i386/i386/db_interface.d (as in alpha/alpha/db_interface.c). - Remove cnpollc() stub from ddb/db_input.c. - Add the dbctl function to syscons, pcvt, and sio. (The function for pcvt and sio is noop at the moment.) Jointly developed by: bde and me (The final version was tweaked by me and not reviewed by bde. Thus, if there is any error in this commit, that is entirely of mine, not his.) Some changes were obtained from: NetBSD
* $Id$ -> $FreeBSD$peter1999-08-281-1/+1
|
* add some amount of sanity to the way the gdb stuff finds its device.phk1999-05-091-1/+11
| | | | | | | | I'm not too happy about the result either, but at least it has less chance of backfiring. This particular feature could be called "a mess" without offending anybody.
* Changes to support -Wall, -Wcast-qual. Had to make physical code changesdillon1999-01-271-2/+2
| | | | | in db_lookup() to avoid the *cp = 0 / *cp = ':' combo ( temporary nul-terminate-then-restore-original ) on a const char * string.
* Added macros __printflike() and __scanflike() to <sys/cdefs.h>.bde1998-07-131-4/+3
| | | | | | | | Use them to `make gcc -Wformat' check formats for all printf-like and scanf-like functions in /usr/src except for the err()/warn() family. err() isn't quite printf-like since its format arg can legitimately be NULL. syslog() isn't quite printf-like, but gcc already accepts %m, even for plain printf() when it shouldn't.
* Fixed bogus type of valuep in struct db_variable. It was `int *' andbde1998-07-081-5/+5
| | | | | became `long *' for alpha, but should always have been `db_expr_t *'. Fixed variable types to match.
* This commit fixes various 64bit portability problems required fordfr1998-06-071-7/+7
| | | | | | | | | | FreeBSD/alpha. The most significant item is to change the command argument to ioctl functions from int to u_long. This change brings us inline with various other BSD versions. Driver writers may like to use (__FreeBSD_version == 300003) to detect this change. The prototype FreeBSD/alpha machdep will follow in a couple of days time.
* Redo the previous commit in a more Bruce-friendly fashion.phk1998-05-191-2/+1
| | | | Urged by: bde
* Add "show msgbuf" commandphk1998-05-191-1/+2
|
* Ensure that the linker sets for commands exist by putting a standardbde1998-02-131-2/+1
| | | | | command in each of them. This removes the need for hard-to-configure dummy instantiations of the sets.
* Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are notpeter1997-02-221-1/+1
| | | | ready for it yet.
* Make the long-awaited change from $Id$ to $FreeBSD$jkh1997-01-141-1/+1
| | | | | | | | This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long. Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
* Support statically attaching of ddb commands in non-ddb modules.bde1996-09-141-9/+41
| | | | | | | | | | | | | | | | The details are hidden in the DB_COMMAND(cmd_name, func_name) and DB_SHOW_COMMAND(cmd_name, func_name) macros. DB_COMMAND() adds to the top-level ddb command table and DB_SHOW_COMMAND adds to the `show' subtable. Most external commands will probably be `show' commands with no side effects. They should check their pointer args more carefully than `show map' :-), or ddb should trap internal faults better (like it does for memory accesses). The vm ddb commands are temporarily unattached. ddb.h: Also declare `db_indent' and db_iprintf() which will replace vm's `indent' and iprintf().
* Clean up various compiler warnings. Most (if not all) were benigngpalmer1996-05-081-2/+1
| | | | Reviewed by: bde
* Staticize and cleanup.phk1995-12-101-2/+1
|
* Untangled the vm.h include file spaghetti.dg1995-12-071-2/+1
|
* Staticized and '#ifdef notused' stuff we don't use.phk1995-11-291-4/+1
|
* Completed function declarations and/or added prototypes.bde1995-11-241-57/+68
| | | | | | Removed `extern' from prototypes. Sorted prototypes. Uniformized idempotency ifdefs.
* Remove trailing whitespace.rgrimes1995-05-301-3/+3
|
* Add and move declarations to fix all of the warnings from `gcc -Wimplicit'bde1995-03-161-1/+4
| | | | | | (except in netccitt, netiso and netns) and most of the warnings from `gcc -Wnested-externs'. Fix all the bugs found. There were no serious ones.
* Woops, wrong solution to the problem. Backed out previous fix to ddb.h, anddg1994-09-271-1/+2
| | | | | | | nuked the db_printf() declaration from db_output.h. Reviewed by: Submitted by: Obtained from:
* Nuked db_printf() prototype; it now clashes with the one in db_output.h.dg1994-09-271-2/+1
|
* The big 4.4BSD Lite to FreeBSD 2.0.0 (Development) patch.rgrimes1994-05-251-1/+2
| | | | | Reviewed by: Rodney W. Grimes Submitted by: John Dyson and David Greenman
* Make the LINT kernel compile with -W -Wreturn-type -Wcomment -Werror, andwollman1993-11-251-0/+109
add same (sans -Werror) to Makefile for future compilations.
OpenPOWER on IntegriCloud