Document stack_save_td(9) and stack_save_td_running(9).

Reviewed by:	wblock
Sponsored by:	EMC / Isilon Storage Division
Differential Revision:	https://reviews.freebsd.org/D3243
This commit is contained in:
Mark Johnston 2015-09-11 03:56:04 +00:00
parent 610141cebb
commit 99fdade2c6
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=287646

View File

@ -27,7 +27,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd November 16, 2011
.Dd September 10, 2015
.Dt STACK 9
.Os
.Sh NAME
@ -36,9 +36,11 @@
.Sh SYNOPSIS
.In sys/param.h
.In sys/stack.h
.Pp
In the kernel configuration file:
.Cd "options DDB"
.Cd "options STACK"
.Pp
.Ft struct stack *
.Fn stack_create "void"
.Ft void
@ -63,6 +65,10 @@ In the kernel configuration file:
.Fn stack_sbuf_print_ddb "struct sbuf sb*" "const struct stack *st"
.Ft void
.Fn stack_save "struct stack *st"
.Ft void
.Fn stack_save_td "struct stack *st" "struct thread *td"
.Ft int
.Fn stack_save_td_running "struct stack *st" "struct thread *td"
.Sh DESCRIPTION
The
.Nm
@ -86,6 +92,16 @@ Memory associated with a trace is freed by calling
.Pp
A trace of the current kernel thread's call stack may be captured using
.Fn stack_save .
.Fn stack_save_td
and
.Fn stack_save_td_running
can also be used to capture the stack of a caller-specified thread.
Callers of these functions must own the thread lock of the specified thread.
.Fn stack_save_td
can capture the stack of a kernel thread that is not running or
swapped out at the time of the call.
.Fn stack_save_td_running
can capture the stack of a running kernel thread.
.Pp
.Fn stack_print
and
@ -130,6 +146,23 @@ The utility functions
and
.Nm stack_put
may be used to manipulate stack data structures directly.
.Sh RETURN VALUES
.Fn stack_put
returns 0 on success.
Otherwise the
.Dv struct stack
does not contain space to record additional frames, and a non-zero value is
returned.
.Pp
.Fn stack_save_td_running
returns 0 when the stack capture was successful and a non-zero error number
otherwise.
In particular,
.Er EAGAIN
is returned if the thread was running in user mode at the time that the
capture was attempted, and
.Er EOPNOTSUPP
is returned if the operation is not implemented.
.Sh SEE ALSO
.Xr ddb 4 ,
.Xr printf 9 ,