diff options
author | rwatson <rwatson@FreeBSD.org> | 2007-12-02 20:40:35 +0000 |
---|---|---|
committer | rwatson <rwatson@FreeBSD.org> | 2007-12-02 20:40:35 +0000 |
commit | 99285f7544399971d1bcb6e3c18e7010905925e5 (patch) | |
tree | 25f0781d4e40520309936f686c0accc99753b656 /sys/ia64 | |
parent | e6e32be1d57fbe0f67adfd9c0cb818a1660dca5a (diff) | |
download | FreeBSD-src-99285f7544399971d1bcb6e3c18e7010905925e5.zip FreeBSD-src-99285f7544399971d1bcb6e3c18e7010905925e5.tar.gz |
Break out stack(9) from ddb(4):
- 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)
Diffstat (limited to 'sys/ia64')
-rw-r--r-- | sys/ia64/conf/GENERIC | 1 | ||||
-rw-r--r-- | sys/ia64/ia64/db_machdep.c | 12 | ||||
-rw-r--r-- | sys/ia64/ia64/stack_machdep.c | 57 |
3 files changed, 58 insertions, 12 deletions
diff --git a/sys/ia64/conf/GENERIC b/sys/ia64/conf/GENERIC index 2fa5086..84a1fb7 100644 --- a/sys/ia64/conf/GENERIC +++ b/sys/ia64/conf/GENERIC @@ -50,6 +50,7 @@ options SCSI_DELAY=5000 # Delay (in ms) before probing SCSI options SMP # Symmetric Multi-Processor support options SOFTUPDATES # Enable FFS soft updates support options UFS_GJOURNAL # Enable gjournal-based UFS journaling +options STACK # stack(9) support options SYSVMSG # SYSV-style message queues options SYSVSEM # SYSV-style semaphores options SYSVSHM # SYSV-style shared memory diff --git a/sys/ia64/ia64/db_machdep.c b/sys/ia64/ia64/db_machdep.c index 6579f3b..cdd60ab 100644 --- a/sys/ia64/ia64/db_machdep.c +++ b/sys/ia64/ia64/db_machdep.c @@ -597,18 +597,6 @@ db_trace_thread(struct thread *td, int count) return (db_backtrace(td, ctx, count)); } -void -stack_save(struct stack *st) -{ - - stack_zero(st); - /* - * Nothing for now. - * Is libuwx reentrant? - * Can unw_create* sleep? - */ -} - #ifdef EXCEPTION_TRACING extern long xtrace[]; diff --git a/sys/ia64/ia64/stack_machdep.c b/sys/ia64/ia64/stack_machdep.c new file mode 100644 index 0000000..5e513ea --- /dev/null +++ b/sys/ia64/ia64/stack_machdep.c @@ -0,0 +1,57 @@ +/*- + * Copyright (c) 2005 Antoine Brodin + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/param.h> +#include <sys/systm.h> +#include <sys/proc.h> +#include <sys/stack.h> + +void +stack_save_td(struct stack *st, struct thread *td) +{ + + if (TD_IS_SWAPPED(td)) + panic("stack_save_td: swapped"); + if (TD_IS_RUNNING(td)) + panic("stack_save_td: running"); + + stack_zero(st); +} + +void +stack_save(struct stack *st) +{ + + stack_zero(st); + /* + * Nothing for now. + * Is libuwx reentrant? + * Can unw_create* sleep? + */ +} |