summaryrefslogtreecommitdiffstats
path: root/sys/kern/subr_stack.c
Commit message (Collapse)AuthorAgeFilesLines
* Constify stack argument for functions that don't modify it.pjd2011-11-161-9/+9
| | | | Reviewed by: ed, kib, jhb
* Add some FEATURE macros for various features (AUDIT/CAM/IPC/KTR/MAC/NFS/NTP/netchild2011-02-251-0/+3
| | | | | | | | | | | | | PMC/SYSV/...). No FreeBSD version bump, the userland application to query the features will be committed last and can serve as an indication of the availablility if needed. Sponsored by: Google Summer of Code 2010 Submitted by: kibab Reviewed by: arch@ (parts by rwatson, trasz, jhb) X-MFC after: to be determined in last commit with code from this project
* kdb_backtrace: use stack_print_ddb instead of stack_printavg2010-09-221-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | This is a followup to r212964. stack_print call chain obtains linker sx lock and thus potentially may lead to a deadlock depending on a kind of a panic. stack_print_ddb doesn't acquire any locks and it doesn't use any facilities of ddb backend. Using stack_print_ddb outside of DDB ifdef required taking a number of helper functions from under it as well. It is a good idea to rename linker_ddb_* and stack_*_ddb functions to have 'unlocked' component in their name instead of 'ddb', because those functions do not use any DDB services, but instead they provide unlocked access to linker symbol information. The latter was previously needed only for DDB, hence the 'ddb' name component. Alternative is to ditch unlocked versions altogether after implementing proper panic handling: 1. stop other cpus upon a panic 2. make all non-spinlock lock operations (mutex, sx, rwlock) be a no-op when panicstr != NULL Suggested by: mdf Discussed with: attilio MFC after: 2 weeks
* Add stack_print_short() and stack_print_short_ddb() interfaces torwatson2009-06-241-10/+54
| | | | | | | stack(9), which generate a more compact rendition of a stack trace via the kernel's printf. MFC after: 1 week
* Make it possible to compile kernel with KTR but without DDB.sobomax2008-10-301-1/+5
|
* Ktr(9) stores format string and arguments in the event circular buffer,kib2008-10-191-21/+25
| | | | | | | | | | | | not the string formatted at the time of CTRX() call. Stack_ktr(9) uses an on-stack buffer for the symbol name, that is supplied as an argument to ktr. As result, stack_ktr() traces show garbage or cause page faults. Fix stack_ktr() by using pointer to module symbol table that is supposed to have a longer lifetime. Tested by: pho MFC after: 1 week
* Staticize M_STACK.antoine2008-07-131-1/+1
| | | | | Approved by: rwatson (mentor) MFC after: 1 month
* When a symbol name can't be resolved, return "??" as the name, ratherrwatson2007-12-031-2/+2
| | | | | than "Unknown func", in order to avoid putting spaces in what ideally is a string separated by white space.
* Break out stack(9) from ddb(4):rwatson2007-12-021-0/+2
| | | | | | | | | | | | | | | | | | | | - Introduce per-architecture stack_machdep.c to hold stack_save(9). - Introduce per-architecture machine/stack.h to capture any common definitions required between db_trace.c and stack_machdep.c. - Add new kernel option "options STACK"; we will build in stack(9) if it is defined, or also if "options DDB" is defined to provide compatibility with existing users of stack(9). Add new stack_save_td(9) function, which allows the capture of a stacktrace of another thread rather than the current thread, which the existing stack_save(9) was limited to. It requires that the thread be neither swapped out nor running, which is the responsibility of the consumer to enforce. Update stack(9) man page. Build tested: amd64, arm, i386, ia64, powerpc, sparc64, sun4v Runtime tested: amd64 (rwatson), arm (cognet), i386 (rwatson)
* Modify stack(9) stack_print() and stack_sbuf_print() routines to use newrwatson2007-12-011-24/+79
| | | | | | | | | | | | | | | | linker interfaces for looking up function names and offsets from instruction pointers. Create two variants of each call: one that is "DDB-safe" and avoids locking in the linker, and one that is safe for use in live kernels, by virtue of observing locking, and in particular safe when kernel modules are being loaded and unloaded simultaneous to their use. This will allow them to be used outside of debugging contexts. Modify two of three current stack(9) consumers to use the DDB-safe interfaces, as they run in low-level debugging contexts, such as inside lockmgr(9) and the kernel memory allocator. Update man page.
* Correct typoskris2006-05-281-3/+3
| | | | MFC after: 2 weeks
* Add 'depth' argument to CTRSTACK() macro, which allows to reduce numberpjd2005-08-291-3/+7
| | | | | of ktr slots used. If 'depth' is equal to 0, the whole stack will be logged, just like before.
* - Add support for saving stack traces and displaying them via printf(9)jeff2005-08-031-0/+165
and KTR. Contributed by: Antoine Brodin <antoine.brodin@laposte.net> Concept code from: Neal Fachan <neal@isilon.com>
OpenPOWER on IntegriCloud