272461 |
03-Oct-2014 |
gjb |
Copy stable/10@r272459 to releng/10.1 as part of the 10.1-RELEASE process.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
264210 |
07-Apr-2014 |
pfg |
MFC r263973;
ddb: Minor style cleanups.
#define should be followed by tab.
|
256281 |
10-Oct-2013 |
gjb |
Copy head (r256279) to stable/10 as part of the 10.0-RELEASE cycle.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation
|
242424 |
01-Nov-2012 |
alfred |
Small textdump enhancements.
Allow textdumps to be called explicitly from DDB.
If "dump" is called in DDB and textdumps are enabled then abort the dump and tell the user to turn off textdumps.
Add options TEXTDUMP_PREFERRED to turn textdumps on by default. Add options TEXTDUMP_VERBOSE to be a bit more verbose while textdumping.
Reviewed by: rwatson
MFC after: 2 weeks
|
234196 |
12-Apr-2012 |
jhb |
Update the ddb and gdb backends for the new 'trace_thread' hook. It is implemented via db_trace_thread() for DDB and not implemented for GDB. This should have been part of r234190.
Pointy hat to: jhb Reported by: jkim MFC after: 1 week
|
229272 |
02-Jan-2012 |
ed |
Use strchr() and strrchr().
It seems strchr() and strrchr() are used more often than index() and rindex(). Therefore, simply migrate all kernel code to use it.
For the XFS code, remove an empty line to make the code identical to the code in the Linux kernel.
|
228687 |
18-Dec-2011 |
pluknet |
Use FOREACH_PROC_IN_SYSTEM instead of using its unrolled form.
Reviewed by: kib
|
228569 |
16-Dec-2011 |
kib |
Add 'findstack' ddb command to search either the thread kernel stack or cached stack containing the specified kernel virtual address.
Discussed with: pho MFC after: 1 week
|
228568 |
16-Dec-2011 |
kib |
Show the thread kernel stack base address for 'show threads'.
Discussed with: pho MFC after: 1 week
|
228376 |
09-Dec-2011 |
kib |
Typo.
MFC after: 3 days
|
225214 |
27-Aug-2011 |
rwatson |
Follow up to r225203 refining break-to-debugger run-time configuration improvements:
(1) Implement new model in previously missed at91 UART driver (2) Move BREAK_TO_DEBUGGER and ALT_BREAK_TO_DEBUGGER from opt_comconsole.h to opt_kdb.h (spotted by np) (3) Garbage collect now-unused opt_comconsole.h
MFC after: 3 weeks Approved by: re (bz)
|
222801 |
07-Jun-2011 |
marcel |
Fix making kernel dumps from the debugger by creating a command for it. Do not not expect a developer to call doadump(). Calling doadump does not necessarily work when it's declared static. Nor does it necessarily do what was intended in the context of text dumps. The dump command always creates a core dump.
Move printing of error messages from doadump to the dump command, now that we don't have to worry about being called from DDB.
|
221179 |
28-Apr-2011 |
jhb |
Trim some additional unnecessary <linker_set.h> includes.
MFC after: 1 week
|
221121 |
27-Apr-2011 |
attilio |
- Add the possibility to reuse the already last used timeout when patting the watchdog, via the watchdog(9) interface. For that, the WD_LASTVAL bitwise operation is used. It is mutually exclusive with any explicit timout passing to the watchdogs. The last timeout can be returned via the wdog_kern_last_timeout() KPI. - Add the possibility to pat the watchdogs installed via the watchdog(9) interface from the kernel. In order to do that the new KPI wdog_kern_pat() is offered and it does accept normalized nanoseconds or WD_LASTVAL. - Avoid to pass WD_ACTIVE down in the watchdog handlers. All the control bit processing should over to the upper layer functions and not passed down to the handlers at all.
These changes are intended to be used in order to fix up the watchdog tripping in situation when the userland is busted, but protection is still wanted (examples: shutdown syncing / disk dumping).
Sponsored by: Sandvine Incorporated Reviewed by: emaste, des, cognet MFC after: 2 weeks
|
220362 |
05-Apr-2011 |
attilio |
Extend the DDB command "watchdog" with the ability to specify a timeout value.
The timeout is expressed in the form T(N) = (2^N * nanoseconds) and can be easilly extracted from the watchdog interface as a WD_TO_* macro. That new functionality is supposed to fix re-entering the kernel from DDB re-enabling the watchdog again (previously disabled) and also offer the possibility to break for deadlocked DDB commands.
Please note that retro-compatibility is retained.
Sponsored by: Sandvine Incorporated Approved by: des MFC after: 10 days
|
218825 |
18-Feb-2011 |
mdf |
Modify kdb_trap() so that it re-calls the dbbe_trap function as long as the debugger back-end has changed. This means that switching from ddb to gdb no longer requires a "step" which can be dangerous on an already-crashed kernel.
Also add a capability to get from the gdb back-end back to ddb, by typing ^C in the console window.
While here, simplify kdb_sysctl_available() by using sbuf_new_for_sysctl(), and use strlcpy() instead of strncpy() since the strlcpy semantic is desired.
MFC after: 1 month
|
217326 |
12-Jan-2011 |
mdf |
sysctl(9) cleanup checkpoint: amd64 GENERIC builds cleanly.
Commit the kernel changes.
|
209934 |
12-Jul-2010 |
kib |
One more use for _SIG_VALID.
Submitted by: Garrett Cooper <yanegomi gmail com> MFC after: 1 week
|
208509 |
24-May-2010 |
bz |
MFp4 @178364:
Implement an optional delay to the ddb reset/reboot command.
This allows textdumps to be run automatically with unattended reboots after a resonable timeout, while still permitting an administrator to break into debugger if attached to the console at the time of the event for further debugging. Cap the maximum delay at 1 week to avoid highly accidental results, and default to 15s in case of problems parsing the timeout value.
Move hex2dec helper function from db_thread.c to db_command.c to make it generally available and prefix it with a "db_" to avoid namespace collisions.
Reviewed by: rwatson MFC after: 4 weeks
|
207922 |
11-May-2010 |
attilio |
There is not a good reason to have a different prototype for db_printf() when compared to printf(). Unify it by returning the number of characters displayed for db_printf() as well.
MFC after: 7 days
|
206639 |
14-Apr-2010 |
julian |
Move two copies of the same definition to a common include file.
MFC after: 3 weeks
|
203804 |
12-Feb-2010 |
rpaulo |
Add a space before printing 'thread pid ...' to match the space before ']'.
|
201794 |
08-Jan-2010 |
trasz |
Replace several instances of 'if (!a & b)' with 'if (!(a &b))' in order to silence newer GCC versions.
|
199355 |
17-Nov-2009 |
kib |
Among signal generation syscalls, only sigqueue(2) is allowed by POSIX to fail due to lack of resources to queue siginfo. Add KSI_SIGQ flag that allows sigqueue_add() to fail while trying to allocate memory for new siginfo. When the flag is not set, behaviour is the same as for KSI_TRAP: if memory cannot be allocated, set bit in sq_kill. KSI_TRAP is kept to preserve KBI.
Add SI_KERNEL si_code, to be used in siginfo.si_code when signal is generated by kernel. Deliver siginfo when signal is generated by kill(2) family of syscalls (SI_USER with properly filled si_uid and si_pid), or by kernel (SI_KERNEL, mostly job control or SIGIO). Since KSI_SIGQ flag is not set for the ksi, low memory condition cause old behaviour.
Keep psignal(9) KBI intact, but modify it to generate SI_KERNEL si_code. Pgsignal(9) and gsignal(9) now take ksi explicitely. Add pksignal(9) that behaves like psignal but takes ksi, and ddb kill command implemented as pksignal(..., ksi = NULL) to not do allocation while in debugger.
While there, remove some register specifiers and use ANSI C prototypes.
Reviewed by: davidxu MFC after: 1 month
|
197684 |
01-Oct-2009 |
jhb |
Put square backets ([]) around process names for system processes to patch the behavior of ps(1).
|
196019 |
01-Aug-2009 |
rwatson |
Merge the remainder of kern_vimage.c and vimage.h into vnet.c and vnet.h, we now use jails (rather than vimages) as the abstraction for virtualization management, and what remained was specific to virtual network stacks. Minor cleanups are done in the process, and comments updated to reflect these changes.
Reviewed by: bz Approved by: re (vimage blanket)
|
195699 |
14-Jul-2009 |
rwatson |
Build on Jeff Roberson's linker-set based dynamic per-CPU allocator (DPCPU), as suggested by Peter Wemm, and implement a new per-virtual network stack memory allocator. Modify vnet to use the allocator instead of monolithic global container structures (vinet, ...). This change solves many binary compatibility problems associated with VIMAGE, and restores ELF symbols for virtualized global variables.
Each virtualized global variable exists as a "reference copy", and also once per virtual network stack. Virtualized global variables are tagged at compile-time, placing the in a special linker set, which is loaded into a contiguous region of kernel memory. Virtualized global variables in the base kernel are linked as normal, but those in modules are copied and relocated to a reserved portion of the kernel's vnet region with the help of a the kernel linker.
Virtualized global variables exist in per-vnet memory set up when the network stack instance is created, and are initialized statically from the reference copy. Run-time access occurs via an accessor macro, which converts from the current vnet and requested symbol to a per-vnet address. When "options VIMAGE" is not compiled into the kernel, normal global ELF symbols will be used instead and indirection is avoided.
This change restores static initialization for network stack global variables, restores support for non-global symbols and types, eliminates the need for many subsystem constructors, eliminates large per-subsystem structures that caused many binary compatibility issues both for monitoring applications (netstat) and kernel modules, removes the per-function INIT_VNET_*() macros throughout the stack, eliminates the need for vnet_symmap ksym(2) munging, and eliminates duplicate definitions of virtualized globals under VIMAGE_GLOBALS.
Bump __FreeBSD_version and update UPDATING.
Portions submitted by: bz Reviewed by: bz, zec Discussed with: gnn, jamie, jeff, jhb, julian, sam Suggested by: peter Approved by: re (kensmith)
|
193066 |
29-May-2009 |
jamie |
Place hostnames and similar information fully under the prison system. The system hostname is now stored in prison0, and the global variable "hostname" has been removed, as has the hostname_mtx mutex. Jails may have their own host information, or they may inherit it from the parent/system. The proper way to read the hostname is via getcredhostname(), which will copy either the hostname associated with the passed cred, or the system hostname if you pass NULL. The system hostname can still be accessed directly (and without locking) at prison0.pr_host, but that should be avoided where possible.
The "similar information" referred to is domainname, hostid, and hostuuid, which have also become prison parameters and had their associated global variables removed.
Approved by: bz (mentor)
|
189581 |
09-Mar-2009 |
imp |
Prefer prototypes to k&r definitions.
|
183527 |
01-Oct-2008 |
peter |
Collect N identical (or near identical) mkdumpheader() implementations into one, as threatened in the comment. Textdump magic can be passed in.
|
183360 |
25-Sep-2008 |
jhb |
Initialize the DDB command list when initializing DDB so that the basic commands are available from 'boot -d'.
Suggested by: dfr
|
183054 |
15-Sep-2008 |
sam |
Make ddb command registration dynamic so modules can extend the command set (only so long as the module is present): o add db_command_register and db_command_unregister to add and remove commands, respectively o replace linker sets with SYSINIT's (and SYSUINIT's) that register commands o expose 3 list heads: db_cmd_table, db_show_table, and db_show_all_table for registering top-level commands, show operands, and show all operands, respectively
While here also: o sort command lists o add DB_ALIAS, DB_SHOW_ALIAS, and DB_SHOW_ALL_ALIAS to add aliases for existing commands o add "show all trace" as an alias for "show alltrace" o add "show all locks" as an alias for "show alllocks"
Submitted by: Guillaume Ballet <gballet@gmail.com> (original version) Reviewed by: jhb MFC after: 1 month
|
181842 |
18-Aug-2008 |
attilio |
Add a missing include which was erroneusly left out from the previous commit.
Sponsored by: Nokia
|
181840 |
18-Aug-2008 |
attilio |
Bufferize the output for DDB printouts. In order to CATER this, DDB buffered output can be choosen at compile time through the option DDB_BUFR_SIZE=nbytes where nbytes choose the size of the buffer (suggested size is 128 bytes), which should be manually specified in any interested config file.
Sponsored by: Nokia
|
181803 |
17-Aug-2008 |
bz |
Commit step 1 of the vimage project, (network stack) virtualization work done by Marko Zec (zec@).
This is the first in a series of commits over the course of the next few weeks.
Mark all uses of global variables to be virtualized with a V_ prefix. Use macros to map them back to their global names for now, so this is a NOP change only.
We hope to have caught at least 85-90% of what is needed so we do not invalidate a lot of outstanding patches again.
Obtained from: //depot/projects/vimage-commit2/... Reviewed by: brooks, des, ed, mav, julian, jamie, kris, rwatson, zec, ... (various people I forgot, different versions) md5 (with a bit of help) Sponsored by: NLnet Foundation, The FreeBSD Foundation X-MFC after: never V_Commit_Message_Reviewed_By: more people than the patch
|
181175 |
02-Aug-2008 |
cognet |
Fix software single-stepping: we need to check if the instruction is a return instruction as well, or we'll stop single-stepping as soon as we'll return from a function.
MFC after: 3 days
|
179861 |
18-Jun-2008 |
attilio |
Print out the container lock when showing the thread state in DDB.
Tested by: benjsc
|
178492 |
25-Apr-2008 |
rwatson |
Rename debug.ddb.capture.bytes sysctl to debug.ddb.capture.bufoff in order to match the internal variable name.
Add a new sysctl debug.ddb.capture.inprogress to export the inprogress variable.
MFC after: 3 days
|
177615 |
25-Mar-2008 |
sam |
enable dynamic addition of "show all" commands
MFC after: 3 weeks
|
176914 |
07-Mar-2008 |
rwatson |
Add a /S mode to DDB "ex" command, which interprets and prints the value at the requested address as a symbol. For example, "ex /S aio_swake" prints the name of the function currently registered in via aio_swake hook.
The change as committed differs slightly from the patch in the PR, as I force the size of the retrieved value (and the automatic address increment) to be sizeof(void *). This seems to provide the most useful auto-increment behavior, and defaults using the default size (4), which is not sizeof(void *) on 64-bit platforms.
MFC after: 3 days PR: 57976 Submitted by: Dan Strick <strick at covad.net>
|
176897 |
07-Mar-2008 |
rwatson |
When killing a user process from DDB, check that the requested signal is > 0 rather than >= 0, or we will panic when trying to deliver the signal.
MFC after: 3 days PR: 100802 Submitted by: Valerio Daelli <valerio.daelli at gmail.com>
|
176895 |
07-Mar-2008 |
rwatson |
Reserve two bytes at the end of the DDB input line in db_readline() to hold the newline and nul terminator. Otherwise, there are cases where garbage may end up in the command history due to a lack of a nul terminator, or input may end up without room for a newline.
MFC after: 3 days PR: 119079 Submitted by: Michael Plass <mfp49_freebsd@plass-family.net>
|
176870 |
06-Mar-2008 |
rwatson |
When redrawing an input line, count backspaces to get to the beginning of the input field from the current cursor location, rather than the end of the input line, as the cursor may not be at the end of the line. Otherwise, we may overshoot, overwriting a bit of the previous line and failing to fully overwrite the current line.
MFC after: 3 days PR: 119079 Submitted by: Michael Plass <mfp49_freebsd@plass-family.net>
|
175858 |
31-Jan-2008 |
rwatson |
Use dump_write() instead of direct calls to di->dumper() in textdumps. Textdumps already do pretty much the same sanity checking, but abstractions and seatbelts are both useful.
MFC after: 2 months
|
175699 |
26-Jan-2008 |
rwatson |
Increase maximum DDB capture buffer size to 5MB.
PR: 119993 MFC after: 2 months Suggested by: Scot Hetzel <swhetzel at gmail dot com>
|
175694 |
26-Jan-2008 |
rwatson |
Allow DDB_CAPTURE_DEFAULTBUFSIZE and DDB_CAPTURE_MAXBUFSIZE to be overridden at compile-time using kernel options of the same names.
Rather than doing a compile-time CTASSERT of buffer sizes being even multiples of block sizes, just adjust them at boottime, as the failure mode is more user-friendly.
MFC after: 2 months PR: 119993 Suggested by: Scot Hetzel <swhetzel at gmail dot com>
|
175684 |
26-Jan-2008 |
rwatson |
Rename DB_ constants in db_capture.c to DDB_ so that when they are exposed as kernel compile options, they have more meaningful names.
PR: 119993 MFC after: 2 months Suggested by: Scot Hetzel <swhetzel at gmail dot com>
|
175199 |
10-Jan-2008 |
rwatson |
Refine textdump comments slightly.
MFC after: 3 months
|
174921 |
26-Dec-2007 |
rwatson |
Add textdump(4) facility, which provides an alternative form of kernel dump using mechanically generated/extracted debugging output rather than a simple memory dump. Current sources of debugging output are:
- DDB output capture buffer, if there is captured output to save - Kernel message buffer - Kernel configuration, if included in kernel - Kernel version string - Panic message
Textdumps are stored in swap/dump partitions as with regular dumps, but are laid out as ustar files in order to allow multiple parts to be stored as a stream of sequentially written blocks. Blocks are written out in reverse order, as the size of a textdump isn't known a priori. As with regular dumps, they will be extracted using savecore(8).
One new DDB(4) command is added, "textdump", which accepts "set", "unset", and "status" arguments. By default, normal kernel dumps are generated unless "textdump set" is run in order to schedule a textdump. It can be canceled using "textdump unset" to restore generation of a normal kernel dump.
Several sysctls exist to configure aspects of textdumps; debug.ddb.textdump.pending can be set to check whether a textdump is pending, or set/unset in order to control whether the next kernel dump will be a textdump from userspace.
While textdumps don't have to be generated as a result of a DDB script run automatically as part of a kernel panic, this is a particular useful way to use them, as instead of generating a complete memory dump, a simple transcript of an automated DDB session can be captured using the DDB output capture and textdump facilities. This can be used to generate quite brief kernel bug reports rich in debugging information but not dependent on kernel symbol tables or precisely synchronized source code. Most textdumps I generate are less than 100k including the full message buffer. Using textdumps with an interactive debugging session is also useful, with capture being enabled/disabled in order to record some but not all of the DDB session.
MFC after: 3 months
|
174919 |
26-Dec-2007 |
rwatson |
Remove duplicate $FreeBSD$ that snuck in.
MFC after: 3 months
|
174914 |
26-Dec-2007 |
rwatson |
Add a simple scripting facility to DDB(4), allowing the user to define a set of named scripts. Each script consists of a list of DDB commands separated by ";"s that will be executed verbatim. No higher level language constructs, such as branching, are provided for: scripts are executed by sequentially injecting commands into the DDB input buffer.
Four new commands are present in DDB: "run" to run a specific script, "script" to define or print a script, "scripts" to list currently defined scripts, and "unscript" to delete a script, modeled on shell alias commands. Scripts may also be manipulated using sysctls in the debug.ddb.scripting MIB space, although users will prefer to use the soon-to-be-added ddb(8) tool for usability reasons.
Scripts with certain names are automatically executed on various DDB events, such as entering the debugger via a panic, a witness error, watchdog, breakpoint, sysctl, serial break, etc, allowing customized handling.
MFC after: 3 months
|
174910 |
25-Dec-2007 |
rwatson |
Add a new DDB(4) facility, output capture. Input and output from DDB may be captured to a memory buffer for later inspection using sysctl(8), or in the future, to a textdump.
A new DDB command, "capture", is added, which accepts arguments "on", "off", "reset", and "status".
A new DDB sysctl tree, debug.ddb.capture, is added, which can be used to resize the capture buffer and extract buffer contents.
MFC after: 3 months
|
173077 |
27-Oct-2007 |
jhb |
Make the examine command honor db_pager_quit so you can use 'q' or 'x' at the pager prompt to abort an examine command that spans multiple pages.
MFC after: 1 week
|
172705 |
16-Oct-2007 |
marcel |
Print the stack bounds of the thread.
|
172207 |
17-Sep-2007 |
jeff |
- Move all of the PS_ flags into either p_flag or td_flags. - p_sflag was mostly protected by PROC_LOCK rather than the PROC_SLOCK or previously the sched_lock. These bugs have existed for some time. - Allow swapout to try each thread in a process individually and then swapin the whole process if any of these fail. This allows us to move most scheduler related swap flags into td_flags. - Keep ki_sflag for backwards compat but change all in source tools to use the new and more correct location of P_INMEM.
Reported by: pho Reviewed by: attilio, kib Approved by: re (kensmith)
|
166074 |
17-Jan-2007 |
delphij |
Use FOREACH_PROC_IN_SYSTEM instead of using its unrolled form.
|
164936 |
06-Dec-2006 |
julian |
Threading cleanup.. part 2 of several.
Make part of John Birrell's KSE patch permanent.. Specifically, remove: Any reference of the ksegrp structure. This feature was never fully utilised and made things overly complicated. All code in the scheduler that tried to make threaded programs fair to unthreaded programs. Libpthread processes will already do this to some extent and libthr processes already disable it.
Also: Since this makes such a big change to the scheduler(s), take the opportunity to rename some structures and elements that had to be moved anyhow. This makes the code a lot more readable.
The ULE scheduler compiles again but I have no idea if it works.
The 4bsd scheduler still reqires a little cleaning and some functions that now do ALMOST nothing will go away, but I thought I'd do that as a separate commit.
Tested by David Xu, and Dan Eischen using libthr and libpthread.
|
164359 |
17-Nov-2006 |
jhb |
Fix the output format of MI ddb watches in 'show watch' on 64-bit platforms.
|
164029 |
06-Nov-2006 |
kib |
Set up the context for the dbbe_trace callback in the ddb. Otherwise, trap caused by backtracing would lead to panic.
Noted and reviewed by: bde
|
163909 |
02-Nov-2006 |
kib |
On trap while inside ddb, the trap handler calls kdb_reenter(), that longjmp to the default context. As result, "alltrace" command may be prematurely terminated (without error message). This is happens, for instance, when system is low on memory and referenced page in kernel-mode thread stack is swapped out.
Protect "alltrace" against termination on trap by setting temporary kdb_jmpbuf context.
Submitted by: Peter Holm
|
163709 |
26-Oct-2006 |
jb |
Make KSE a kernel option, turned on by default in all GENERIC kernel configs except sun4v (which doesn't process signals properly with KSE).
Reviewed by: davidxu@
|
163192 |
10-Oct-2006 |
bde |
The powerpc and sparc64 MD `reboot' commands should never have existed since they just duplicated the MI `reset' command. Instead of removing them, make `reboot' an MI alias for `reboot' since this gives a better way of killing the `r' alias for `reset'. Remove the `registers' command that was used to kill the alias.
Turn the powerpc and sparc64 MD `halt' command into an MI command.
A copy of sparc64/db_interface.c grew in sun4v just after I found the extra reboot commands. It has not been changed, and is now not identical. Duplicated commands come out duplicated in ddb's online help, but cause large problems when used (e.g., on i386's with 2 halt's and an hwatch, typing h doesn' give the expected message about an ambiguous command, but hangs like the halt command or a looping parseri would).
|
163190 |
10-Oct-2006 |
bde |
Fixed loss of whitespace suppression at ends of lines. Whitespace suppression is only needed at ends of lines, but rev.1.32 forced it off precisely there.
The --More-- prompt is now cleared by explicitly forcing out the whitespace in "\r \r". It might be better to use the line editor's clearing functions, but these are currently static and not much different.
|
163135 |
08-Oct-2006 |
bde |
Added some aliases: - `b' is now an official alias for `break'. It used to be an unofficial alias, but this was broken by adding the `bt' alias for `trace'. - `t' is now an official alias for `trace'. It used to be an unofficial alias, but this was broken by adding the `thread' command. - `registers' is now an alias for `show registers'. This is a hack to break the unofficial `r' alias for `reset'. `r' really means `registers' in some debuggers, so I sometimes type it accidentally and am annoyed when it resets the system. A short command shouldn't have such a large effect. Now at least `res' must be typed to disambiguate `reset'.
|
163134 |
08-Oct-2006 |
bde |
Fixed formatting of printing of command tables. WIth the default max output width of 79, only 6 columns of width 12 each fit, but 7 columns were printed.
The fix is to pass the width of the next output to db_end_line() and not assume there that this width is always 1.
Related unfixed bugs: - 1 character is wasted for a space after the last column - suppression of trailing spaces used to limit the misformatting, but seems to have been lost - in db_examine(), the width of the next output is not know and is still assumed to be 1.
|
160893 |
01-Aug-2006 |
jhb |
Fix two nits in the ps header that offset each other making them largely unnoticable.
|
160878 |
01-Aug-2006 |
jhb |
Some cosmetic tweaks: - Right justify 'pid' label. - Move the uid column to the right 2 columns so that the 3 process id columns (pid, ppid, pgrp) are grouped together. - Expand the uid column to 5 chars. - Don't indent the tid for multithreaded processes.
Requested by: bde (1, 2, 4)
|
160505 |
19-Jul-2006 |
jhb |
Disable the pager for 'panic' and 'call' to be paranoid.
|
160312 |
12-Jul-2006 |
jhb |
Simplify the pager support in DDB. Allowing different db commands to 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.
|
159668 |
16-Jun-2006 |
kib |
Never zero-out db_last_symtab. Whan backtraces are done in parallel in several threads, one symbol lookup could clear db_last_symtab when another one going to use it as starting point for traversal.
Approved by: pjd (mentor) MFC after: 1 month
|
158456 |
11-May-2006 |
jhb |
Use __LP64__ rather than the PTR64 hack.
Suggested by: ru
|
158092 |
27-Apr-2006 |
jhb |
Sort includes.
|
158091 |
27-Apr-2006 |
jhb |
A whitespace fix.
Submitted by: bde
|
158090 |
27-Apr-2006 |
jhb |
Drop locking comments. ddb functions should never use locking anyway and no other ddb functions try to annotate what locking would otherwise be appropriate in comments.
Prodded by: bde
|
158032 |
25-Apr-2006 |
jhb |
- Overhaul the 'ps' command in ddb to be mostly readable again. :) It is now back to using fixed-size columns for output and each line of output should fit in 80 columns on both 32-bit and 64-bit architectures. In general the output is close to that of the userland ps(1) with the exception that the 'wmesg' field is mostly similar to the "state" field in top(1) in that it will show either a wmesg, a lock name (prefixed with an *), "CPU xx" (for a running thread), or nothing if none of those three conditions are true. It also respects td_name when listing threads in a multithreaded process. There is a somewhat evilly-defined PTR64 macro I use to make account for the change in the size of the 'wchan' column in the formatted output (wchan is now the only pointer in the ps output and is available so it can be passed to 'show sleepq', 'show turnstile', or 'show lock'). - Add two new commands "show proc [process]" and "show thread [thread]" that show details about the specified process or thread (specified either by pid/tid or pointer), respectively. If an address it not specified, it uses the current kdb thread.
|
158029 |
25-Apr-2006 |
jhb |
Add two helper functions: db_lookup_thread() and db_lookup_proc(). They 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.
|
157951 |
21-Apr-2006 |
jhb |
Use LIST_FOREACH().
|
156412 |
07-Mar-2006 |
jhb |
Clean up the way we handle auxiliary commands for a given ddb command 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.
|
153072 |
04-Dec-2005 |
ru |
Fix -Wundef.
|
151622 |
24-Oct-2005 |
jhb |
- Rename 'traceall' to 'alltrace' so that the 'tr' shortcut for 'trace' still works. Also, this is consistent with 'show pcpu' vs 'show allpcpu'. (And 'show allstacks' on OS X for that matter.) - Add 'bt' as an alias for 'trace'. We already have a 'where' alias as well, so this makes it easier for gdb-wired hands to work in ddb.
Ok'd by: rwatson (1) Requested by: scottl (2) MFC after: 1 day
|
150842 |
02-Oct-2005 |
cognet |
- Call db_setup_paging() for traceall. - Make it so one can't call db_setup_paging() if it has already been called before. traceall needs this, or else the db_setup_paging() call from db_trace_thread() will reset the printed line number, and override its argument. This is not perfect for traceall, because even if one presses 'q' while in the middle of printing a backtrace it will finish printing the backtrace before exiting, as db_trace_thread() won't be notified it should stop, but it is hard to do better without reworking the pager interface a lot more.
|
150819 |
02-Oct-2005 |
rwatson |
Add a DDB "traceall" function, which stack traces all known process threads. This is quite useful if generating a debug log for post-mortem by another developer, in which case the person at the console may not know which threads are of interest. The output of this can be quite long.
Discussed with: kris MFC after: 3 days
|
149925 |
10-Sep-2005 |
marcel |
Move the prototypes of db_md_set_watchpoint(), db_md_clr_watchpoint() and db_md_list_watchpoints() to ddb/ddb.h.
|
148919 |
10-Aug-2005 |
obrien |
Remove the need to forward declare statics by moving them around.
|
147745 |
02-Jul-2005 |
marcel |
Implement functions calls from within DDB on ia64. On ia64 a function 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)
|
145343 |
20-Apr-2005 |
ps |
Don't enter the debugger if KDB_UNATTENDED is set or if debug.debugger_on_panic=0.
MFC after: 2 weeks
|
145053 |
14-Apr-2005 |
peter |
rev 1.54 of i386/include/pcb.h depended on sys/proc.h. The prerequisite was satisified for the rest of the kernel on the i386 build except for these two files. Rather than adding a submarine include to pcb.h, I've added proc.h here.
I forgot to include these with the original commit. Sorry folks.
|
139747 |
06-Jan-2005 |
imp |
Start each of the license/copyright comments with /*-
|
138038 |
23-Nov-2004 |
rwatson |
When printing a stack trace for a thread, also print the pid and tid. When a series of traces is included in a bug report, this will make it easier to tie the trace information back to ps or threads output, each of which will show the pid or the tid, but usually not both.
|
138037 |
23-Nov-2004 |
rwatson |
When printing information on the current thread, such as when entering DDB, also print the pid of the process if present. Since much debugging still centers around processes, having the pid is quite helpful.
|
137974 |
21-Nov-2004 |
cognet |
Do not attempt to skip a breakpoint that is a result of a software single step, or bad things happen.
|
137923 |
20-Nov-2004 |
das |
Remove the uarea column from the DDB 'ps' display, and from grog's gdb scripts.
Reviewed by: arch@
|
137117 |
01-Nov-2004 |
jhb |
- Change the ddb paging "support" to use a variable (db_lines_per_page) to 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
|
134791 |
05-Sep-2004 |
julian |
Refactor a bunch of scheduler code to give basically the same behaviour but with slightly cleaned up interfaces.
The KSE structure has become the same as the "per thread scheduler private data" structure. In order to not make the diffs too great one is #defined as the other at this time.
The KSE (or td_sched) structure is now allocated per thread and has no allocation code of its own.
Concurrency for a KSEGRP is now kept track of via a simple pair of counters rather than using KSE structures as tokens.
Since the KSE structure is different in each scheduler, kern_switch.c is now included at the end of each scheduler. Nothing outside the scheduler knows the contents of the KSE (aka td_sched) structure.
The fields in the ksegrp structure that are to do with the scheduler's queueing mechanisms are now moved to the kg_sched structure. (per ksegrp scheduler private data structure). In other words how the scheduler queues and keeps track of threads is no-one's business except the scheduler's. This should allow people to write experimental schedulers with completely different internal structuring.
A scheduler call sched_set_concurrency(kg, N) has been added that notifies teh scheduler that no more than N threads from that ksegrp should be allowed to be on concurrently scheduled. This is also used to enforce 'fainess' at this time so that a ksegrp with 10000 threads can not swamp a the run queue and force out a process with 1 thread, since the current code will not set the concurrency above NCPU, and both schedulers will not allow more than that many onto the system run queue at a time. Each scheduler should eventualy develop their own methods to do this now that they are effectively separated.
Rejig libthr's kernel interface to follow the same code paths as linkse for scope system threads. This has slightly hurt libthr's performance but I will work to recover as much of it as I can.
Thread exit code has been cleaned up greatly. exit and exec code now transitions a process back to 'standard non-threaded mode' before taking the next step. Reviewed by: scottl, peter MFC after: 1 week
|
132791 |
28-Jul-2004 |
kan |
Damage control. Correcly advance symtab and strtab pointers, not table length values.
Spotted by: iedowse
|
132771 |
28-Jul-2004 |
kan |
Avoid casts as lvalues.
|
132484 |
21-Jul-2004 |
marcel |
Oops... Add the CS_OWN flag to the trace and where commands so that db_stack_trace() actually has a chance to parse its own arguments.
|
132482 |
21-Jul-2004 |
marcel |
Unify db_stack_trace_cmd(). All it did was look up the thread given 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
|
132002 |
12-Jul-2004 |
marcel |
Re-add the gdb command. It was removed to be replaced by something more generic, but that didn't actually happen. Since the feature to switch backends (and historically this means from DDB to GDB) is important, make sure people can do just that until such the generic mechanism actually sees the light of day.
Suggested by: rwatson@
|
131961 |
11-Jul-2004 |
marcel |
Remove now unused files: db_elf.c, db_kld.c: The new KDB backend supports both at the same time. db_sysctl.c: The functionality has been moved to sys/kern/subr_kdb.c. db_trap.c: The DDB entry point has been moved to sys/ddb/db_main.c.
|
131952 |
10-Jul-2004 |
marcel |
Mega update for the KDB framework: turn DDB into a KDB backend. 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.
|
129373 |
18-May-2004 |
bde |
Fixed DDB_NOKLDSYM on amd64's:
machdep.c: Initialize the symbol table pointers, not quite like for other arches.
db_elf.c: Don't claim to be an i486 in the fake ELF header.
|
128019 |
07-Apr-2004 |
imp |
Remove advertising clause from University of California Regent's license, per letter dated July 22, 1999 and email from Peter Wemm, Alan Cox and Robert Watson.
Approved by: core, peter, alc, rwatson
|
126399 |
29-Feb-2004 |
phk |
Give DDB a "watchdog" command which disables all watchdogs.
|
126326 |
27-Feb-2004 |
jhb |
Switch the sleep/wakeup and condition variable implementations to use the sleep queue interface: - Sleep queues attempt to merge some of the benefits of both sleep queues and condition variables. Having sleep qeueus in a hash table avoids having to allocate a queue head for each wait channel. Thus, struct cv has shrunk down to just a single char * pointer now. However, the hash table does not hold threads directly, but queue heads. This means that once you have located a queue in the hash bucket, you no longer have to walk the rest of the hash chain looking for threads. Instead, you have a list of all the threads sleeping on that wait channel. - Outside of the sleepq code and the sleep/cv code the kernel no longer differentiates between cv's and sleep/wakeup. For example, calls to abortsleep() and cv_abort() are replaced with a call to sleepq_abort(). Thus, the TDF_CVWAITQ flag is removed. Also, calls to unsleep() and cv_waitq_remove() have been replaced with calls to sleepq_remove(). - The sched_sleep() function no longer accepts a priority argument as sleep's no longer inherently bump the priority. Instead, this is soley a propery of msleep() which explicitly calls sched_prio() before blocking. - The TDF_ONSLEEPQ flag has been dropped as it was never used. The associated TDF_SET_ONSLEEPQ and TDF_CLR_ON_SLEEPQ macros have also been dropped and replaced with a single explicit clearing of td_wchan. TD_SET_ONSLEEPQ() would really have only made sense if it had taken the wait channel and message as arguments anyway. Now that that only happens in one place, a macro would be overkill.
|
126204 |
24-Feb-2004 |
phk |
Add DDB_NUMSYM option which in addition to the symbolic representation also prints the actual numerical value of the symbol in question.
Users of addr2line(1) will be less proficient in hex arithmetic as a consequence.
This amongst other things means that traceback lines change from: siointr1(c4016800,c073bda0,0,c06b699c,69f) at siointr1+0xc5 to siointr1(c4016800,c073bda0,0,c06b699c,69f) at 0xc062b0bd = siointr1+0xc5
I made this an option to avoid bikesheds. ~ ~ ~
|
125134 |
28-Jan-2004 |
njl |
If not in the debugger or if the user requests it with the debug.ddb_use_printf sysctl, output kernel debugger data to both the console and kernel message buffer via printf. This fixes the case where backtrace() went directly to the console and should help debugging greatly. Thanks to Ian Dowse for the work, minor edits or any bugs are by myself.
Submitted by: iedowse
|
120543 |
28-Sep-2003 |
bde |
Reworked rev.1.14. Use the ELF symbol type again to summarily reject some symbols in X_db_search_symbol(). Reject the same symbols that rev.1.13 did (all except STT_OBJECT and STT_FUNC), except don't reject typeless symbols. This keeps the typeless symbols in non-verbosely written assembler code visible, but makes file symbols invisible. ELF file symbols have type STT_FILE and value 0, so this stops small values and offsets sometimes being displayed in terms of the first file symbol in the kernel (usually device_if.c). I think it rejects some other unwanted symbols (small absolute symbols for things like struct offsets). It may reject some wanted symbols (large absolute symbols for addresses like PTmap).
|
119594 |
30-Aug-2003 |
phk |
Label the uarea address as such in DDB's ps output
|
118990 |
16-Aug-2003 |
marcel |
Further cleanup <machine/cpu.h> and <machine/md_var.h>: move the MI prototypes of cpu_halt(), cpu_reset() and swi_vm() from md_var.h to cpu.h. This affects db_command.c and kern_shutdown.c.
ia64: move all MD prototypes from cpu.h to md_var.h. This affects madt.c, interrupt.c and mp_machdep.c. Remove is_physical_memory(). It's not used (vm_machdep.c).
alpha: the MD prototypes have been left in cpu.h with a comment that they should be there. Moving them is left for later. It was expected that the impact would be significant enough to be done in a seperate commit.
powerpc: MD prototypes left in cpu.h. Comment added.
Suggested by: bde Tested with: make universe (pc98 incomplete)
|
118822 |
12-Aug-2003 |
harti |
db_get_value uses a local buffer to first fetch all the bytes of a integer value and then to construct the integer from it. This buffer was sizeof(int) bytes long, which was fine until the (undocumented) 'g' modifier for 8-byte integers was introduced. Change this to sizeof(uint64_t).
|
118269 |
31-Jul-2003 |
jhb |
Update the 'ps', 'show pci', and 'show ktr' ddb commands to use the new pager callout instead of homerolling their own paging facility.
|
118268 |
31-Jul-2003 |
jhb |
Add a one-shot callout facility to db_printf() that executes the registered 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
|
118228 |
30-Jul-2003 |
jhb |
Whitespace nit.
|
116361 |
15-Jun-2003 |
davidxu |
Rename P_THREADED to P_SA. P_SA means a process is using scheduler activations.
|
116176 |
10-Jun-2003 |
obrien |
Use __FBSDID().
|
115911 |
06-Jun-2003 |
julian |
Attempt to crunch down the thread state info so that it is more likely to fit on one line. Account for threads better.
* No need to report that it is on a sleep queue if it is actually sleeping * "Normal" state is almost ubiquitous.. only report abnormal states. * increment the #lines count for each separate thread shown in threaded programs.
makes it less likely that a threaded program will make all the data on a screen overflow off the top of the screen.
|
115904 |
06-Jun-2003 |
jhb |
Handle the TDS_INACTIVE state by printing '[INACTIVE]' instead of panic'ing. Also, for unknown thread states, print out the value rather than panic. Panic'ing in the debugger is pointless at best.
|
115903 |
06-Jun-2003 |
jhb |
Whitespace nits.
|
115607 |
01-Jun-2003 |
phk |
Make "where" an alias for "trace"
|
115560 |
31-May-2003 |
phk |
Add /* FALLTHROUGH */ Found by: FlexeLint
|
115495 |
31-May-2003 |
phk |
Add /* FALLTHROUGH */
Found by: FlexeLint
|
113339 |
10-Apr-2003 |
julian |
Move the _oncpu entry from the KSE to the thread. The entry in the KSE still exists but it's purpose will change a bit when we add the ability to lock a KSE to a cpu.
|
113071 |
04-Apr-2003 |
des |
The kernel bcopy() is safe for overlapping regions (and always has), so there is no use for a separate ovbcopy().
|
111585 |
27-Feb-2003 |
julian |
Change the process flags P_KSES to be P_THREADED. This is just a cosmetic change but I've been meaning to do it for about a year.
|
111028 |
17-Feb-2003 |
jeff |
- Split the struct kse into struct upcall and struct kse. struct kse will soon be visible only to schedulers. This greatly simplifies much the KSE code.
Submitted by: davidxu
|
111017 |
16-Feb-2003 |
phk |
Change "dev_t gdbdev" to "void *gdb_arg", some possible paths for GDB will not have a dev_t.
|
110190 |
01-Feb-2003 |
julian |
Reversion of commit by Davidxu plus fixes since applied.
I'm not convinced there is anything major wrong with the patch but them's the rules..
I am using my "David's mentor" hat to revert this as he's offline for a while.
|
109877 |
26-Jan-2003 |
davidxu |
Move UPCALL related data structure out of kse, introduce a new data structure called kse_upcall to manage UPCALL. All KSE binding and loaning code are gone.
A thread owns an upcall can collect all completed syscall contexts in its ksegrp, turn itself into UPCALL mode, and takes those contexts back to userland. Any thread without upcall structure has to export their contexts and exit at user boundary.
Any thread running in user mode owns an upcall structure, when it enters kernel, if the kse mailbox's current thread pointer is not NULL, then when the thread is blocked in kernel, a new UPCALL thread is created and the upcall structure is transfered to the new UPCALL thread. if the kse mailbox's current thread pointer is NULL, then when a thread is blocked in kernel, no UPCALL thread will be created.
Each upcall always has an owner thread. Userland can remove an upcall by calling kse_exit, when all upcalls in ksegrp are removed, the group is atomatically shutdown. An upcall owner thread also exits when process is in exiting state. when an owner thread exits, the upcall it owns is also removed.
KSE is a pure scheduler entity. it represents a virtual cpu. when a thread is running, it always has a KSE associated with it. scheduler is free to assign a KSE to thread according thread priority, if thread priority is changed, KSE can be moved from one thread to another.
When a ksegrp is created, there is always N KSEs created in the group. the N is the number of physical cpu in the current system. This makes it is possible that even an userland UTS is single CPU safe, threads in kernel still can execute on different cpu in parallel. Userland calls kse_create to add more upcall structures into ksegrp to increase concurrent in userland itself, kernel is not restricted by number of upcalls userland provides.
The code hasn't been tested under SMP by author due to lack of hardware.
Reviewed by: julian
|
108512 |
31-Dec-2002 |
jake |
Revert previous and move the prototype for db_alt_break to ddb.h.
Requested by: bde (I think)
|
108488 |
31-Dec-2002 |
jake |
- Add a function db_alt_break which recognizes the character sequence used to implement ALT_BREAK_TO_DEBUGGER. The caller provides a pointer to a state variable to allow different state to be maintained for separate instances of a device. - Use struct vm_map * instead of vm_map_t in db_break.h to avoid its users needing to include vm headers.
Requested by: njl
|
108338 |
28-Dec-2002 |
julian |
Add code to ddb to allow backtracing an arbitrary thread. (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.
|
105954 |
25-Oct-2002 |
mux |
- Rename the DDB specific %z printf format to %y. - Make DDB use %y instead of %z. - Teach GCC about %y. - Implement support for the C99 %z format modifier.
Approved by: re@ Reviewed by: peter Tested on: i386, sparc64
|
105663 |
21-Oct-2002 |
julian |
Remove the process state PRS_WAIT. It is never used. I left it there from pre-KSE days as I didn't know if I'd need it or not but now I know I don't.. It's functionality is in TDI_IWAIT in the thread.
|
104695 |
09-Oct-2002 |
julian |
Round out the facilty for a 'bound' thread to loan out its KSE in specific situations. The owner thread must be blocked, and the borrower can not proceed back to user space with the borrowed KSE. The borrower will return the KSE on the next context switch where teh owner wants it back. This removes a lot of possible race conditions and deadlocks. It is consceivable that the borrower should inherit the priority of the owner too. that's another discussion and would be simple to do.
Also, as part of this, the "preallocatd spare thread" is attached to the thread doing a syscall rather than the KSE. This removes the need to lock the scheduler when we want to access it, as it's now "at hand".
DDB now shows a lot mor info for threaded proceses though it may need some optimisation to squeeze it all back into 80 chars again. (possible JKH project)
Upcalls are now "bound" threads, but "KSE Lending" now means that other completing syscalls can be completed using that KSE before the upcall finally makes it back to the UTS. (getting threads OUT OF THE KERNEL is one of the highest priorities in the KSE system.) The upcall when it happens will present all the completed syscalls to the KSE for selection.
|
104387 |
02-Oct-2002 |
jhb |
Rename the mutex thread and process states to use a more generic 'LOCK' name instead. (e.g., SLOCK instead of SMTX, TD_ON_LOCK() instead of TD_ON_MUTEX()) Eventually a turnstile abstraction will be added that will be shared with mutexes and other types of locks. SLOCK/TDI_LOCK will be used internally by the turnstile code and will not be specific to mutexes. Making the change now ensures that turnstiles can be dropped in at a later date without affecting the ABI of userland applications.
|
104321 |
01-Oct-2002 |
phk |
Indentation indicates missing braces.
Spotted by: FlexeLint
|
104094 |
28-Sep-2002 |
phk |
Be consistent about "static" functions: if the function is marked static in its prototype, mark it static at the definition too.
Inspired by: FlexeLint warning #512
|
103746 |
21-Sep-2002 |
markm |
Constify to kill some warnings.
|
103646 |
19-Sep-2002 |
jhb |
Implement db_print_backtrace() if DDB is compiled into the kernel. This 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
|
103362 |
15-Sep-2002 |
bde |
Garbage-collected __ELF__ ifdefs.
Fixed some style bugs (mainly unused includes).
|
103361 |
15-Sep-2002 |
bde |
Don't use the ELF symbol type to summarily reject symbols in X_db_search_symbol(). Otherwise we don't see important symbols in non-verbosely written assembler code.
NetBSD already has this. The kld version already has a stronger form of it without really trying -- linker_ddb_search_symbol() doesn't support ddb's symbol search strategy parameter, so the kld X_db_search_symbol() doesn't pass the parameter to linker_ddb...() and linker_ddb...() doesn't make distinctions based on the symbol type.
db_elf.c now works better than db_kld.c when it works (which is essentially when there are no modules except the kernel). It works after booting with -d. db_kld.c doesn't work until lots of SYSINIT()s have run.
|
103360 |
15-Sep-2002 |
bde |
Made this work on i386's at least. It wants ELF section headers for symbol table sections. Reconstruct the necessary section headers from (ksym_start, ksym_end). This was much easier than converting to use module metadata, and just works for static symbols, unlike db_kld when there is no module metadata. Initialize (ksym_start, ksym_end) from bootinfo on i386's only.
The boot loader should load section headers for all sections that it loads, and apparently did this for at least the symbol table sections when this file last worked under FreeBSD (on alphas only) and always did this under NetBSD (where this file was obtained from). At least on i386's, boot2 discards the section headers (except for converting them to (bootinfo.bi_symtab, bootinfo.bi_esymtab), and as far as I can tell, loader(8) discards them apart from converting them to the bootinfo values and module metadata.
|
103358 |
15-Sep-2002 |
bde |
Made this compile (but not work). This involved mainly const poisoning and renaming ALIGNED_POINTER() to _ALIGNED_POINTER() plus the following hacks for i386's: - define _ALIGNED_POINTER() if it is not already defined. Most non-i386 arches define it <machine/param.h> define it in <machine/param.h>, although none actually used it in the kernel. - define ksym_start and ksym_end. Most non-i386 arches still define and initialize these in machdep.c although they didn't used them. Here is a better place to define them but not to initialize them.
|
103216 |
11-Sep-2002 |
julian |
Completely redo thread states.
Reviewed by: davidxu@freebsd.org
|
102667 |
31-Aug-2002 |
bde |
db_ps.c: Don't attempt to follow null pointers for zombie processes in db_ps().
Style fix: use explicit an comparison with NULL for all null pointer checks in db_ps() instead of for half of them.
db_interface.c: Fixed ddb's handling of traps from with ddb on i386's only.
This was mostly fixed in rev.1.27 (by longjmp()'ing back to the top level) but was completly broken in rev.1.48 (by not unwinding the new state (mainly db_active) either before or after the longjmp(). This mostly never worked for other arches, since rev.1.27 has not been ported and lower level longjmp()'s only handle traps for memory accesses. All cases should be handled at a lower level to provided better control and simplify unwinding of state.
Implementation details: don't pretend to maintain db_active in a nested way -- ddb cannot be reentered in a nested way. Use db_active instead of the db_global_jmpbuf_valid flag and longjmp()'s return value for things related to reentering ddb. [re]entering is still not atomic enough.
|
101878 |
14-Aug-2002 |
jmallett |
When talking about c_db_sym_t, mention that it is not just like db_sym_t: it's const.
Inspired by: bde
|
101784 |
13-Aug-2002 |
phk |
Realign columns in DDB's ps output. Don't waste more horizontal space than necessary.
|
99072 |
29-Jun-2002 |
julian |
Part 1 of KSE-III
The ability to schedule multiple threads per process (one one cpu) by making ALL system calls optionally asynchronous. to come: ia64 and power-pc patches, patches for gdb, test program (in tools)
Reviewed by: Almost everyone who counts (at various times, peter, jhb, matt, alfred, mini, bernd, and a cast of thousands)
NOTE: this is still Beta code, and contains lots of debugging stuff. expect slight instability in signals..
|
99013 |
29-Jun-2002 |
peter |
Remove a couple of __P() stragglers.
|
98815 |
25-Jun-2002 |
tmm |
Don't assume that pointers are 4 bytes or sizeof(int) in size. This fixes the indirection operator ('*') and address examination ('x/a') on big-endian platoforms for which the above is not true, as well as on little-endian platforms if the cut-off bits are not 0.
|
98694 |
23-Jun-2002 |
mux |
Split the declaration and the initialization of two variables. This has the fortunate side effect of stopping GCC from reporting warnings about unused variables on sparc64.
Reviewed by: bde
|
97880 |
05-Jun-2002 |
gibbs |
Allow DB_SET() to set all fields in the ddb command structure. This allows external ddb commands to do anyting an internal command can do, including non-standard argument parsing if desired.
|
96155 |
07-May-2002 |
bde |
Reconnect db_elf.c to the build (now under "options DDB_NOKLDSYM"). It doesn't actually build yet.
|
96086 |
06-May-2002 |
bde |
Restored db_elf.c from the Attic. This will be used for a quick fix for the longstanding brokenness of symbols in ddb at boot time. It doesn't compile and is not attached to the build yet.
|
94456 |
11-Apr-2002 |
jhb |
Commented out locking that would be used in the ps command if locks were used in ddb.
|
93009 |
23-Mar-2002 |
bde |
Fixed some style bugs in the removal of __P(()). Continuation lines were not outdented to preserve non-KNF lining up of code with parentheses. Switch to KNF formatting.
|
92756 |
20-Mar-2002 |
alfred |
Remove __P.
|
92011 |
10-Mar-2002 |
dfr |
Allow '.' in identifiers - some ia64 register names contain '.'.
|
90591 |
12-Feb-2002 |
yar |
^U kills an entire input line in most applications, including the default terminal canonical mode. So let ddb(4) be no exception from this rule.
Pointed out by: Mark Peek <mark@peek.org>
|
90528 |
11-Feb-2002 |
yar |
Teach ddb(4) to delete to the beginning of its command line on ^U.
PR: kern/28976 Submitted by: Nickolai Zeldovich <kolya@orbit.zepa.net>
|
90361 |
07-Feb-2002 |
julian |
Pre-KSE/M3 commit. this is a low-functionality change that changes the kernel to access the main thread of a process via the linked list of threads rather than assuming that it is embedded in the process. It IS still embeded there but remove all teh code that assumes that in preparation for the next commit which will actually move it out.
Reviewed by: peter@freebsd.org, gallatin@cs.duke.edu, benno rice,
|
89442 |
17-Jan-2002 |
mjacob |
pid is 'long' on alpha.
|
86998 |
27-Nov-2001 |
dd |
Implement a "kill" DDB command which is an interface to psignal() that respects locks. Before SMPng, one was able to call psignal() using the "call" command, but this is no longer possible because it does not respect locks by itself. This is very useful when one has gotten their machine into a state where it is impossible to spawn ps/kill or su to root.
In this case, respecting locks essentially means trying to aquire the proc lock before calling psignal(). We can't block in the debugger, so if trylock fails, the operation fails. This also means that we can't use pfind(), since that will attempt to lock the process for us.
Reviewed by: jhb
|
86110 |
05-Nov-2001 |
phk |
GC the a.out support in DDB, nothing anywhere would pull this file into a build.
|
86109 |
05-Nov-2001 |
arr |
- Include machine/md_var.h to get rid of cpu_reset() warning. (-Wall)
Approved by: jhb
|
85944 |
03-Nov-2001 |
peter |
Add a 'reset' command. This is useful for panics really early before any symbols are loaded. Especially for unattended machines.
|
85207 |
20-Oct-2001 |
jhb |
Make the flag field in the ps output one char wider to account for recent growth in the number of flags used. Also, if a thread is blocked on a mutex, print the mutex name in the wait channel column.
|
83506 |
15-Sep-2001 |
dfr |
Fill out some gaps in ia64 DDB support. This involves generalising DDB's breakpoint handling slightly to cope with the fact that ia64 instructions are not located on byte boundaries.
|
83383 |
12-Sep-2001 |
jhb |
- Whitespace fixes. - Fix an old bug: p_comm is an array not a pointer, so it can't be NULL.`
|
83366 |
12-Sep-2001 |
julian |
KSE Milestone 2 Note ALL MODULES MUST BE RECOMPILED make the kernel aware that there are smaller units of scheduling than the process. (but only allow one thread per process at this time). This is functionally equivalent to teh previousl -current except that there is a thread associated with each process.
Sorry john! (your next MFC will be a doosie!)
Reviewed by: peter@freebsd.org, dillon@freebsd.org
X-MFC after: ha ha ha ha
|
81670 |
15-Aug-2001 |
obrien |
No tokens should follow #endif.
|
79884 |
19-Jul-2001 |
kris |
Quiet a variable format-string warning.
MFC after: 1 week
|
79573 |
11-Jul-2001 |
bsd |
Add 'hwatch' and 'dhwatch' ddb commands analogous to 'watch' and '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
|
79418 |
08-Jul-2001 |
julian |
A set of changes to reduce the number of include files the kernel takes from /usr/include. I cannot check them on alpha.. (will try beast)
Briefly looked at by: Warner Losh <imp@harmony.village.org>
|
78161 |
13-Jun-2001 |
peter |
With this commit, I hereby pronounce gensetdefs past its use-by date.
Replace the a.out emulation of 'struct linker_set' with something a little more flexible. <sys/linker_set.h> now provides macros for accessing elements and completely hides the implementation.
The linker_set.h macros have been on the back burner in various forms since 1998 and has ideas and code from Mike Smith (SET_FOREACH()), John Polstra (ELF clue) and myself (cleaned up API and the conversion of the rest of the kernel to use it).
The macros declare a strongly typed set. They return elements with the type that you declare the set with, rather than a generic void *.
For ELF, we use the magic ld symbols (__start_<setname> and __stop_<setname>). Thanks to Richard Henderson <rth@redhat.com> for the trick about how to force ld to provide them for kld's.
For a.out, we use the old linker_set struct.
NOTE: the item lists are no longer null terminated. This is why the code impact is high in certain areas.
The runtime linker has a new method to find the linker set boundaries depending on which backend format is in use.
linker sets are still module/kld unfriendly and should never be used for anything that may be modular one day.
Reviewed by: eivind
|
77183 |
25-May-2001 |
rwatson |
o Merge contents of struct pcred into struct ucred. Specifically, add the real uid, saved uid, real gid, and saved gid to ucred, as well as the pcred->pc_uidinfo, which was associated with the real uid, only rename it to cr_ruidinfo so as not to conflict with cr_uidinfo, which corresponds to the effective uid. o Remove p_cred from struct proc; add p_ucred to struct proc, replacing original macro that pointed. p->p_ucred to p->p_cred->pc_ucred. o Universally update code so that it makes use of ucred instead of pcred, p->p_ucred instead of p->p_pcred, cr_ruidinfo instead of p_uidinfo, cr_{r,sv}{u,g}id instead of p_*, etc. o Remove pcred0 and its initialization from init_main.c; initialize cr_ruidinfo there. o Restruction many credential modification chunks to always crdup while we figure out locking and optimizations; generally speaking, this means moving to a structure like this: newcred = crdup(oldcred); ... p->p_ucred = newcred; crfree(oldcred); It's not race-free, but better than nothing. There are also races in sys_process.c, all inter-process authorization, fork, exec, and exit. o Remove sigio->sio_ruid since sigio->sio_ucred now contains the ruid; remove comments indicating that the old arrangement was a problem. o Restructure exec1() a little to use newcred/oldcred arrangement, and use improved uid management primitives. o Clean up exit1() so as to do less work in credential cleanup due to pcred removal. o Clean up fork1() so as to do less work in credential cleanup and allocation. o Clean up ktrcanset() to take into account changes, and move to using suser_xxx() instead of performing a direct uid==0 comparision. o Improve commenting in various kern_prot.c credential modification calls to better document current behavior. In a couple of places, current behavior is a little questionable and we need to check POSIX.1 to make sure it's "right". More commenting work still remains to be done. o Update credential management calls, such as crfree(), to take into account new ruidinfo reference. o Modify or add the following uid and gid helper routines: change_euid() change_egid() change_ruid() change_rgid() change_svuid() change_svgid() In each case, the call now acts on a credential not a process, and as such no longer requires more complicated process locking/etc. They now assume the caller will do any necessary allocation of an exclusive credential reference. Each is commented to document its reference requirements. o CANSIGIO() is simplified to require only credentials, not processes and pcreds. o Remove lots of (p_pcred==NULL) checks. o Add an XXX to authorization code in nfs_lock.c, since it's questionable, and needs to be considered carefully. o Simplify posix4 authorization code to require only credentials, not processes and pcreds. Note that this authorization, as well as CANSIGIO(), needs to be updated to use the p_cansignal() and p_cansched() centralized authorization routines, as they currently do not take into account some desirable restrictions that are handled by the centralized routines, as well as being inconsistent with other similar authorization instances. o Update libkvm to take these changes into account.
Obtained from: TrustedBSD Project Reviewed by: green, bde, jhb, freebsd-arch, freebsd-audit
|
76166 |
01-May-2001 |
markm |
Undo part of the tangle of having sys/lock.h and sys/mutex.h included in other "system" header files.
Also help the deprecation of lockmgr.h by making it a sub-include of sys/lock.h and removing sys/lockmgr.h form kernel .c files.
Sort sys/*.h includes where possible in affected files.
OK'ed by: bde (with reservations)
|
74914 |
28-Mar-2001 |
jhb |
Catch up to header include changes: - <sys/mutex.h> now requires <sys/systm.h> - <sys/mutex.h> and <sys/sx.h> now require <sys/lock.h>
|
70527 |
30-Dec-2000 |
phk |
Use macro API for <sys/queue.h>
|
62573 |
04-Jul-2000 |
phk |
Previous commit changing SYSCTL_HANDLER_ARGS violated KNF.
Pointed out by: bde
|
62454 |
03-Jul-2000 |
phk |
Style police catches up with rev 1.26 of src/sys/sys/sysctl.h:
Sanitize SYSCTL_HANDLER_ARGS so that simplistic tools can grog our sources:
-sysctl_vm_zone SYSCTL_HANDLER_ARGS +sysctl_vm_zone (SYSCTL_HANDLER_ARGS)
|
56694 |
27-Jan-2000 |
archie |
Add a new sysctl "debug.enter_debugger" (when the kernel is compiled with 'options DDB'). Setting this to `ddb' or `gdb' breaks into the kernel debugger in the corresponding mode. This mechanism has proven very useful at Whistle for setting breakpoints, etc., while doing remote serial line kernel debugging.
Obtained from: Whistle source tree
|
55823 |
11-Jan-2000 |
yokota |
Add a new mechanism, cndbctl(), to tell the console driver that 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
|
55819 |
11-Jan-2000 |
peter |
Unused file. This (NetBSD derived) file was obsoleted by kld.
|
55818 |
11-Jan-2000 |
peter |
Fix a typo in the db_kld.c file - it's kld support not raw a.out support. Always use db_kld.c for symbol table support as the base kernel maintains this information.
|
52812 |
02-Nov-1999 |
archie |
Remove unused macro definition.
|
52635 |
29-Oct-1999 |
phk |
useracc() the prequel:
Merge the contents (less some trivial bordering the silly comments) of <vm/vm_prot.h> and <vm/vm_inherit.h> into <vm/vm.h>. This puts the #defines for the vm_inherit_t and vm_prot_t types next to their typedefs.
This paves the road for the commit to follow shortly: change useracc() to use VM_PROT_{READ|WRITE} rather than B_{READ|WRITE} as argument.
|
52120 |
11-Oct-1999 |
peter |
Delete unneeded #include
Submitted by: phk
|
50477 |
28-Aug-1999 |
peter |
$Id$ -> $FreeBSD$
|
49558 |
09-Aug-1999 |
phk |
Merge the cons.c and cons.h to the best of my ability. alpha may or may not compile, I can't test it.
|
48810 |
14-Jul-1999 |
yokota |
The following patch will remove a hack introduced in /sys/ddb/db_input.c rev 1.19 to recognize syscons's cursor keycodes. It is unnecessary now that scgetc() in syscons returns the escape sequence for the cursor keys rather than their raw, internal key codes.
|
48407 |
01-Jul-1999 |
peter |
Quiet warnings on Alpha. (db_expr_t is a long on alpha, int on x86)
|
47112 |
13-May-1999 |
bde |
Removed an especially bogus cast.
|
47098 |
13-May-1999 |
bde |
Restored used include of <sys/systm.h>. -Wmissing-prototypes doesn't work for builtin functions.
|
46783 |
09-May-1999 |
phk |
add some amount of sanity to the way the gdb stuff finds its device.
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.
|
46658 |
07-May-1999 |
mckusick |
Get rid of extern declarations on gdb stuff so systems compiled without DDB will compile. Warn users that try to use GDB without specifying a GDB port in their configuration file.
|
43926 |
12-Feb-1999 |
bde |
Fixed -Wcast-qual warnings.
|
43925 |
12-Feb-1999 |
bde |
Fixed fatal type mismatches in the aout case. Const poisoning in db_sym.h had not reached here.
|
43309 |
27-Jan-1999 |
dillon |
Fix warnings in preparation for adding -Wall -Wcast-qual to the kernel compile.
This commit includes significant work to proper handle const arguments for the DDB symbol routines.
|
43289 |
27-Jan-1999 |
dillon |
Changes to support -Wall, -Wcast-qual. Had to make physical code changes in db_lookup() to avoid the *cp = 0 / *cp = ':' combo ( temporary nul-terminate-then-restore-original ) on a const char * string.
|
42654 |
14-Jan-1999 |
jdp |
Replace includes of <sys/kernel.h> with includes of <sys/linker_set.h> in those files that use only the linker set definitions.
|
41514 |
04-Dec-1998 |
archie |
Examine all occurrences of sprintf(), strcat(), and str[n]cpy() for possible buffer overflow problems. Replaced most sprintf()'s with snprintf(); for others cases, added terminating NUL bytes where appropriate, replaced constants like "16" with sizeof(), etc.
These changes include several bug fixes, but most changes are for maintainability's sake. Any instance where it wasn't "immediately obvious" that a buffer overflow could not occur was made safer.
Reviewed by: Bruce Evans <bde@zeta.org.au> Reviewed by: Matthew Dillon <dillon@apollo.backplane.com> Reviewed by: Mike Spengler <mks@networkcs.com>
|
40368 |
15-Oct-1998 |
peter |
Forgot to commit this; the alpha uses the kld symbol interface now. The tables that db_elf.c is expecting are not loaded in that format any more.
|
40151 |
09-Oct-1998 |
peter |
Call some helper routines to be supplied by kern_linker.c in order to get to all the symbol tables for all modules, not just the core kernel symbol table. Yes, DDB can see KLD module symbols with this, both by lookup and in tracebacks. No more references to _end from tracebacks within an LKM. :-)
|
40150 |
09-Oct-1998 |
peter |
At the moment, the alpha tentatively uses the ddb elf code rather than KLD, because the alpha boot loader hasn't been converted yet, and because it needs the full symbol tables with local symbols in order to make sense of stack tracebacks. KLD will implement this (using full sybmol table rather than the globals only) shortly.
|
40148 |
09-Oct-1998 |
peter |
We don't compile this on an elf kernel (and explicitly not on alpha in case it's possible to compile in something like ECOFF) The three db_xxx.c symbol interfaces are "standard" because config isn't flexible enough without forcing the user to know about it.
|
38387 |
17-Aug-1998 |
dfr |
Update to work with the new elf headers.
|
37614 |
13-Jul-1998 |
bde |
Added macros __printflike() and __scanflike() to <sys/cdefs.h>. 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.
|
37506 |
08-Jul-1998 |
bde |
Use not-so-new printf formats %r and/or %z instead of %n and/or %+x.
|
37504 |
08-Jul-1998 |
bde |
Fixed bogus type of valuep in struct db_variable. It was `int *' and became `long *' for alpha, but should always have been `db_expr_t *'. Fixed variable types to match.
|
37497 |
08-Jul-1998 |
bde |
Fixed db_printf format errors.
|
37495 |
08-Jul-1998 |
bde |
Fixed db_printf format errors (except for ones using broken extensions (nonstandard %n and '+' with %x), and ones not found by -Wformat on 386's (some db_expr_t's are still printed as ints).
I decided not to change the arg type for %n from [unsigned] int to register_t, since about half of the uses of %n are to print plain ints and casting to [unsigned] long for %n is no harder than for %x.
|
37392 |
05-Jul-1998 |
dfr |
Remove the two single step breakpoints in the reverse order of setting to ensure that single stepping a branch to the next instruction works.
|
37391 |
05-Jul-1998 |
dfr |
Add symtab parameter to X_db_symbol_values.
|
37390 |
05-Jul-1998 |
dfr |
Support 'g' format for printing 8 byte values.
|
37220 |
28-Jun-1998 |
dfr |
Forgot to mention:
Obtained from: NetBSD
|
37219 |
28-Jun-1998 |
dfr |
Add DDB symbol support for ELF and KLD. The KLD support only supports global symbols so its not too useful. Changes to the kernel linker to allow it to supply DDB with symbols will come later.
|
37218 |
28-Jun-1998 |
dfr |
Supply the symbol table as an argument to X_db_symbol_values (required for elf).
|
37217 |
28-Jun-1998 |
dfr |
Use db_addr_t for the breakpoint address in db_set_single_step.
|
37198 |
27-Jun-1998 |
dfr |
Make db_tok_number a long to allow typing 64bit numbers on alpha.
|
37197 |
27-Jun-1998 |
dfr |
Use %+11ln for printing in r format to make it work for 64bit registers.
|
36849 |
10-Jun-1998 |
dfr |
Add initial support for the FreeBSD/alpha kernel. This is very much a work in progress and has never booted a real machine. Initial development and testing was done using SimOS (see http://simos.stanford.edu for details). On the SimOS simulator, this port successfully reaches single-user mode and has been tested with loads as high as one copy of /bin/ls :-).
Obtained from: partly from NetBSD/alpha
|
36760 |
08-Jun-1998 |
dfr |
Make DDB work again after I broke it :-(.
|
36747 |
08-Jun-1998 |
bde |
Backed out previous commit, which just consisted of a 1-byte editing error.
|
36746 |
08-Jun-1998 |
bde |
Fixed missing ifdefs and disordering in previous commit.
|
36745 |
08-Jun-1998 |
bde |
Fixed ifdef bogotification in previous commit.
|
36735 |
07-Jun-1998 |
dfr |
This commit fixes various 64bit portability problems required for 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.
|
36441 |
28-May-1998 |
phk |
Some cleanups related to timecounters and weird ifdefs in <sys/time.h>.
Clean up (or if antipodic: down) some of the msgbuf stuff.
Use an inline function rather than a macro for timecounter delta.
Maintain process "on-cpu" time as 64 bits of microseconds to avoid needless second rollover overhead.
Avoid calling microuptime the second time in mi_switch() if we do not pass through _idle in cpu_switch()
This should reduce our context-switch overhead a bit, in particular on pre-P5 and SMP systems.
WARNING: Programs which muck about with struct proc in userland will have to be fixed.
Reviewed, but found imperfect by: bde
|
36197 |
19-May-1998 |
phk |
Redo the previous commit in a more Bruce-friendly fashion.
Urged by: bde
|
36181 |
19-May-1998 |
phk |
Add "show msgbuf" command
|
33296 |
13-Feb-1998 |
bde |
Ensure that the linker sets for commands exist by putting a standard command in each of them. This removes the need for hard-to-configure dummy instantiations of the sets.
|
33181 |
09-Feb-1998 |
eivind |
Staticize.
|
31549 |
05-Dec-1997 |
dyson |
Some fixes from John Hood: 1) Fix the initialization of malloc structure that changed due to perf opt. 2) Remove unneeded include. 3) An initialization assert added to malloc. Submitted by: John Hood <cgull@smoke.marlboro.vt.us>
|
31314 |
20-Nov-1997 |
bde |
Cleaned up revs.1.19-1.21:
|
31062 |
09-Nov-1997 |
msmith |
A better fix for the ddb command history buffer problem; use a static buffer instead of trying to use malloc() in the input routine. Submitted by: john hood <cgull@smoke.marlboro.vt.us>
|
31005 |
07-Nov-1997 |
msmith |
Don't try to do anything with the input history if MALLOC() for the buffer failed.
This broke early debugging.
|
30239 |
09-Oct-1997 |
bde |
Fixed scrolling. Newline at the "--More--" prompt scrolled 2 lines.
|
29915 |
28-Sep-1997 |
phk |
Print the filename, not the directory we compiled in.
|
28330 |
17-Aug-1997 |
joerg |
Minor hack to also allow for syscons's "interesting" arrow keys.
I'm using "#if __i386__ && __FreeBSD__" to check for a ``potentially syscons-relevant environment''. Hope that's ok...
|
27122 |
30-Jun-1997 |
bde |
Some staticized variables were still declared to be extern.
|
27121 |
30-Jun-1997 |
bde |
Don't depend on gcc's feature of interpreting `int foo(c) char c; ...' as `int foo(char c) ...' if there is a bogus prototype `int foo(char c);' in scope.
|
26639 |
14-Jun-1997 |
bde |
Removed unused #includes.
|
24840 |
12-Apr-1997 |
joerg |
Everyone's favorite, i think: make DDB understand the arrow keys for the basic cursor movements. Assumes ANSI/DEC tty, but you can still resort to plain emacs ^p/^n etc anyway.
|
24490 |
01-Apr-1997 |
bde |
Fixed gratuitous ANSIisms.
|
24343 |
28-Mar-1997 |
bde |
Added a setjmp() so that an initial pc that points to unmapped memory isn't fatal. Backed out rev.1.6, which handled special cases of this.
|
22975 |
22-Feb-1997 |
peter |
Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not ready for it yet.
|
22521 |
10-Feb-1997 |
dyson |
This is the kernel Lite/2 commit. There are some requisite userland changes, so don't expect to be able to run the kernel as-is (very well) without the appropriate Lite/2 userland changes.
The system boots and can mount UFS filesystems.
Untested: ext2fs, msdosfs, NFS Known problems: Incorrect Berkeley ID strings in some files. Mount_std mounts will not work until the getfsent library routine is changed.
Reviewed by: various people Submitted by: Jeffery Hsu <hsu@freebsd.org>
|
21767 |
16-Jan-1997 |
bde |
Fixed printing of small offsets. E.g., -4(%ebp) is now printed as -0x4(%ebp) instead of as _APTD+0xffc(%ebp), and if GUPROF is defined, 8(%ebp) is now printed as 0x8(%ebp) instead of as GMON_PROF_HIRES+0x4(%ebp).
|
21673 |
14-Jan-1997 |
jkh |
Make the long-awaited change from $Id$ to $FreeBSD$
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.
|
20649 |
18-Dec-1996 |
bde |
Fixed bogus linkage of one of the ddb linker sets.
|
19268 |
30-Oct-1996 |
julian |
if there is no console, cngetc should act like getc and return -1
make callers aware of this in those cases where it can occur.
|
18298 |
14-Sep-1996 |
bde |
Attached vm ddb commands `show map', `show vmochk', `show object', `show vmopag', `show page' and `show pageq'. Moved all vm ddb stuff to the ends of the vm source files.
Changed printf() to db_printf(), `indent' to db_indent, and iprintf() to db_iprintf() in ddb commands. Moved db_indent and db_iprintf() from vm to ddb.
vm_page.c: Don't use __pure. Staticized.
db_output.c: Reduced page width from 80 to 79 to inhibit double spacing for long lines (there are still some problems if words are printed across column 79).
|
18296 |
14-Sep-1996 |
bde |
Support statically attaching of ddb commands in non-ddb modules. 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().
|
17848 |
27-Aug-1996 |
pst |
Allow the user to switch into gdb mode from ddb
|
17495 |
10-Aug-1996 |
joerg |
Finally implement a simple commandline history in DDB.
Emacs-style line editing has already been there (did anybody ever notice this? :), so i `only' had to add ^P and ^N. The approach is fairly minimalistic, with the advantage of keeping the bloat as small as 864 bytes of .text and 16 bytes of .bss, plus 10*120 bytes malloc'ed history buffer at the first use.
|
16381 |
15-Jun-1996 |
peter |
A small bit of defensive programming in case the panic is during process exit and cleanup. the 'ps' command assumes that there are always 'nproc' processes on the lists and will walk off the end without checking if not, causing ddb to trap during the 'ps' command.
|
15680 |
08-May-1996 |
gpalmer |
Clean up various compiler warnings. Most (if not all) were benign
Reviewed by: bde
|
14527 |
11-Mar-1996 |
hsu |
For Lite2: proc LIST changes. Reviewed by: david & bde
|
13594 |
23-Jan-1996 |
phk |
Remove some now unused printfoids.
|
13539 |
21-Jan-1996 |
bde |
Fixed the one remaining %r.
|
13533 |
21-Jan-1996 |
phk |
One missed printf in the debugger. Found By: bde
|
13446 |
15-Jan-1996 |
phk |
Get rid of two and a half printf in the kernel. Add more features to the one remaining to handle the job: + signed quantity. # alternate format - left padding * read width as next arg. n numeric in (argument specified) default radix.
Fix the DDB debugger to use these. Use vprintf in debug routine in pcvt.
The warnings from gcc may become more wrong and intolerable because of this.
Warning: I have not checked the entire source for unsupported or changed constructs, but generally belive that there are only a few.
Suggested by: bde
|
12734 |
10-Dec-1995 |
bde |
Reduced and cleaned up #includes.
|
12720 |
10-Dec-1995 |
phk |
Staticize and cleanup.
|
12662 |
07-Dec-1995 |
dg |
Untangled the vm.h include file spaghetti.
|
12515 |
29-Nov-1995 |
phk |
Staticized and '#ifdef notused' stuff we don't use.
|
12473 |
24-Nov-1995 |
bde |
Completed function declarations and/or added prototypes and/or #includes to get the prototypes.
Changed some `int's to `boolean_t's. boolean_t's are ints so they are hard to distinguish from ints.
Converted function headers to old-style. ddb is written in K&R1 C except where we broke it.
|
12472 |
24-Nov-1995 |
bde |
Completed function declarations and/or added prototypes. Removed `extern' from prototypes. Sorted prototypes. Uniformized idempotency ifdefs.
|
10349 |
27-Aug-1995 |
bde |
Change db_ps() to have the correct number and type of args for a ddb command.
|
10348 |
27-Aug-1995 |
bde |
Change db_fncall() and db_panic() to have the correct number and type of args for a ddb command.
|
10128 |
20-Aug-1995 |
dg |
Make db_ps tolerant of uninitialized struct proc fields. Improved 'more' function to work like you'd expect. Other misc cleanup.
|
8876 |
30-May-1995 |
rgrimes |
Remove trailing whitespace.
|
8698 |
22-May-1995 |
dg |
Print the address associated with an examine. Changed db_maxoff to something more reasonable (64k). Suggested by Gordon Ross about a year ago.
|
7610 |
04-Apr-1995 |
dg |
Fixed the formatting breakage I added in the previous commit.
|
7454 |
28-Mar-1995 |
dg |
Fixed DDB's "ps" output formatting.
|
7170 |
19-Mar-1995 |
dg |
Removed redundant newlines that were in some panic strings.
|
7090 |
16-Mar-1995 |
bde |
Add and move declarations to fix all of the warnings from `gcc -Wimplicit' (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.
|
6920 |
05-Mar-1995 |
joerg |
Make ``p'' an explicit alias for ``print'' instead of being an implicit alias for ``panic'', since this seems to be more rational.
|
6204 |
05-Feb-1995 |
phk |
Added "panic" command to ddb, so we can do something sensible even if we have no symbols.
|
5908 |
25-Jan-1995 |
bde |
Load the kernel symbol table in the boot loader and not at compile time. (Boot with the -D flag if you want symbols.)
Make it easier to extend `struct bootinfo' without losing either forwards or backwards compatibility.
ddb_aout.c: Get the symbol table from wherever the loader put it. Nuke db_symtab[SYMTAB_SPACE].
boot.c: Enable loading of symbols. Align them on a page boundary. Add printfs about the symbol table sizes. Pass the memory sizes to the kernel. Fix initialization of `unit' (it got moved out of the loop). Fix adding the bss size (it got moved inside an ifdef). Initialize serial port when RB_SERIAL is toggled on. Fix comments. Clean up formatting of recently added code.
io.c: Clean up formatting of recently added code.
netboot/main.c, machdep.c, wd.c: Change names of bootinfo fields.
LINT: Nuke SYMTAB_SPACE. Fix comment about DODUMP.
Makefile.i386: Nuke use of dbsym. Exclude gcc symbols from kernel unless compiling with -g. Remove unused macro. Fix comments and formatting.
genassym.c: Generate defines for some new bootinfo fields. Change names of old ones.
locore.s: Copy only the valid part of the `struct bootinfo' passed by the loader. Reserve space for symbol table, if any.
machdep.c: Check the memory sizes passed by the loader, if any. Don't use them yet.
bootinfo.h: Add a size field so that we can resolve some mismatches between the loader bootinfo and the kernel boot info. The version number is not so good for this because of historical botches and because it's harder to maintain. Add memory size and symbol table fields. Change the names of everything.
Hacks to save a few bytes:
asm.S, boot.c, boot2.S: Replace `ouraddr' by `(BOOTSEG << 4)'.
boot.c: Don't statically initialize `loadflags' to 0. Disable the "REDUNDANT" code that skips the BIOS variables. Eliminate `total'. Combine some more printfs.
boot.h, disk.c, io.c, table.c: Move all statically initialzed data to table.c.
io.c: Don't put the A20 gate bits in a variable.
|
4016 |
30-Oct-1994 |
bde |
Print "(null)" instead of crashing for null strings. Null names are often generated for stack traces. Now inspection of unmapped addresses no longer panics the system.
|
3315 |
02-Oct-1994 |
phk |
Avoid ddb getting a panic if the code-segment isn't the usual one...
|
3173 |
28-Sep-1994 |
phk |
#include ddb.h not db_output.h
|
3149 |
27-Sep-1994 |
phk |
Added include of <machine/cons.h> so that cngetc() gets declared.
|
3143 |
27-Sep-1994 |
dg |
Woops, wrong solution to the problem. Backed out previous fix to ddb.h, and nuked the db_printf() declaration from db_output.h. Reviewed by: Submitted by: Obtained from:
|
3142 |
27-Sep-1994 |
dg |
Nuked db_printf() prototype; it now clashes with the one in db_output.h.
|
3140 |
27-Sep-1994 |
phk |
Makes gcc silent in sys/ddb.
|
2510 |
05-Sep-1994 |
bde |
386bsd -> kernel in strings.
|
2322 |
27-Aug-1994 |
dg |
ddb ps function from 1.1.5. Moved into its own file and cleaned up a bit by me.
|
2320 |
27-Aug-1994 |
dg |
1) Changed ddb into a option rather than a pseudo-device (use options DDB in your kernel config now). 2) Added ps ddb function from 1.1.5. Cleaned it up a bit and moved into its own file. 3) Added \r handing in db_printf. 4) Added missing memory usage stats to statclock(). 5) Added dummy function to pseudo_set so it will be emitted if there are no other pseudo declarations.
|
2142 |
20-Aug-1994 |
dg |
1) cleaned up after Garrett - fixed more redundant declarations, changed use of timeout_t -> timeout_func_t in aha1542 and aha1742 drivers. 2) fix a bug in the portalfs that was uncovered by better prototyping - specifically, the time must be converted from timeval to timespec before storing in va_atime. 3) fixed/added some miscellaneous prototypes
|
2112 |
18-Aug-1994 |
wollman |
Fix up some sloppy coding practices:
- Delete redundant declarations. - Add -Wredundant-declarations to Makefile.i386 so they don't come back. - Delete sloppy COMMON-style declarations of uninitialized data in header files. - Add a few prototypes. - Clean up warnings resulting from the above.
NB: ioconf.c will still generate a redundant-declaration warning, which is unavoidable unless somebody volunteers to make `config' smarter.
|
2056 |
13-Aug-1994 |
wollman |
Change all #includes to follow the current Berkeley style. Some of these ``changes'' are actually not changes at all, but CVS sometimes has trouble telling the difference.
This also includes support for second-directory compiles. This is not quite complete yet, as `config' doesn't yet do the right thing. You can still make it work trivially, however, by doing the following:
rm /sys/compile mkdir /usr/obj/sys/compile ln -s M-. /sys/compile cd /sys/i386/conf config MYKERNEL cd ../../compile/MYKERNEL ln -s /sys @ rm machine ln -s @/i386/include machine make depend make
|
1549 |
25-May-1994 |
rgrimes |
The big 4.4BSD Lite to FreeBSD 2.0.0 (Development) patch.
Reviewed by: Rodney W. Grimes Submitted by: John Dyson and David Greenman
|
1147 |
11-Feb-1994 |
guido |
ps works inside ddb now.
|
974 |
14-Jan-1994 |
dg |
"New" VM system from John Dyson & myself. For a run-down of the major changes, see the log of any effected file in the sys/vm directory (swap_pager.c for instance).
|
923 |
03-Jan-1994 |
dg |
Patches from John Brezak (necessary for the syscall->trapframe conversion as well as add additional functionality):
Print symbolic args and line no's in stack traces.
|
879 |
19-Dec-1993 |
wollman |
Make everything compile with -Wtraditional. Make it easier to distribute a binary link-kit. Make all non-optional options (pagers, procfs) standard, and update LINT to reflect new symtab requirements.
NB: -Wtraditional will henceforth be forgotten. This editing pass was primarily intended to detect any constructions where the old code might have been relying on traditional C semantics or syntax. These were all fixed, and the result of fixing some of them means that -Wall is now a realistic possibility within a few weeks.
|
798 |
25-Nov-1993 |
wollman |
Make the LINT kernel compile with -W -Wreturn-type -Wcomment -Werror, and add same (sans -Werror) to Makefile for future compilations.
|
716 |
07-Nov-1993 |
wollman |
Make all headers idempotent. All incorrect common data moved out of header files and into a related source file.
|
623 |
16-Oct-1993 |
rgrimes |
Removed all patch kit headers, sccsid and rcsid strings, put $Id$ in, some minor cleanup. Added $Id$ to files that did not have any version info, etc
|
449 |
12-Sep-1993 |
rgrimes |
>From: rich@id.slip.bcm.tmc.edu.cdrom.com (Rich Murphey)
I'd like to be able to say:
options "SYMTAB_SPACE=78000" # Kernel debugger symbol table size
If this seems a reasonable interim solution for freebsd, here's the patch.. Rich
|
430 |
09-Sep-1993 |
rgrimes |
Moved db_end_line after db_printf to eliminate forward reference and shut up the compiler about prototype mismatch.
|
200 |
27-Jul-1993 |
dg |
* Applied fixes from Bruce Evans to fix COW bugs, >1MB kernel loading, profiling, and various protection checks that cause security holes and system crashes. * Changed min/max/bcmp/ffs/strlen to be static inline functions - included from cpufunc.h in via systm.h. This change improves performance in many parts of the kernel - up to 5% in the networking layer alone. Note that this requires systm.h to be included in any file that uses these functions otherwise it won't be able to find them during the load. * Fixed incorrect call to splx() in if_is.c * Fixed bogus variable assignment to splx() in if_ed.c
|
5 |
12-Jun-1993 |
rgrimes |
This commit was generated by cvs2svn to compensate for changes in r4, which included commits to RCS files with non-trunk default branches.
|