Date: Fri, 11 Sep 2015 03:56:05 +0000 (UTC) From: Mark Johnston <markj@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r287646 - head/share/man/man9 Message-ID: <201509110356.t8B3u5pQ083864@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: markj Date: Fri Sep 11 03:56:04 2015 New Revision: 287646 URL: https://svnweb.freebsd.org/changeset/base/287646 Log: 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 Modified: head/share/man/man9/stack.9 Modified: head/share/man/man9/stack.9 ============================================================================== --- head/share/man/man9/stack.9 Fri Sep 11 03:54:37 2015 (r287645) +++ head/share/man/man9/stack.9 Fri Sep 11 03:56:04 2015 (r287646) @@ -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 .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 ,
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201509110356.t8B3u5pQ083864>