From: yangsheng Date: Fri, 8 Oct 2010 09:54:42 +0000 (+0800) Subject: b=22375 Add walk_stack callback for dump_trace. X-Git-Tag: 2.0.54.0~41 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=7d649777daf616ae2b8ff7f8377f6dca71a5d956 b=22375 Add walk_stack callback for dump_trace. o=sebastien.buisson@bull.net i=adilger i=yangsheng --- diff --git a/libcfs/autoconf/lustre-libcfs.m4 b/libcfs/autoconf/lustre-libcfs.m4 index 6932513..e888679 100644 --- a/libcfs/autoconf/lustre-libcfs.m4 +++ b/libcfs/autoconf/lustre-libcfs.m4 @@ -621,6 +621,34 @@ LB_LINUX_TRY_COMPILE([ ]) # +# LIBCFS_STACKTRACE_OPS_HAVE_WALK_STACK +# +# 2.6.32-30.el6 adds a new 'walk_stack' field in 'struct stacktrace_ops' +# +AC_DEFUN([LIBCFS_STACKTRACE_OPS_HAVE_WALK_STACK], +[AC_MSG_CHECKING([if 'struct stacktrace_ops' has 'walk_stack' field]) +LB_LINUX_TRY_COMPILE([ + #include + unsigned long walkstack(struct thread_info *tinfo, + unsigned long *stack, + unsigned long bp, + const struct stacktrace_ops *ops, + void *data, + unsigned long *end, + int *graph); +],[ + struct stacktrace_ops ops; + + ops.walk_stack = walkstack; +],[ + AC_MSG_RESULT([yes]) + AC_DEFINE(STACKTRACE_OPS_HAVE_WALK_STACK, 1, ['struct stacktrace_ops' has 'walk_stack' field]) +],[ + AC_MSG_RESULT([no]) +]) +]) + +# # LIBCFS_PROG_LINUX # # LNet linux kernel checks @@ -666,6 +694,8 @@ LIBCFS_STRUCT_CRED_IN_TASK # 2.6.30 LIBCFS_FUNC_UNSHARE_FS_STRUCT LIBCFS_SOCK_MAP_FD_2ARG +# 2.6.32 +LIBCFS_STACKTRACE_OPS_HAVE_WALK_STACK ]) # diff --git a/libcfs/libcfs/linux/linux-debug.c b/libcfs/libcfs/linux/linux-debug.c index 3c60f6e..363ec8c 100644 --- a/libcfs/libcfs/linux/linux-debug.c +++ b/libcfs/libcfs/linux/linux-debug.c @@ -249,6 +249,9 @@ static DUMP_TRACE_CONST struct stacktrace_ops print_trace_ops = { .warning_symbol = print_trace_warning_symbol, .stack = print_trace_stack, .address = print_trace_address, +#ifdef STACKTRACE_OPS_HAVE_WALK_STACK + .walk_stack = print_context_stack, +#endif }; #endif