Whamcloud - gitweb
b=22375 Add walk_stack callback for dump_trace.
authoryangsheng <Sheng.Yang@sun.com>
Fri, 8 Oct 2010 09:54:42 +0000 (17:54 +0800)
committerVitaly Fertman <vitaly.fertman@sun.com>
Tue, 12 Oct 2010 22:26:33 +0000 (02:26 +0400)
o=sebastien.buisson@bull.net
i=adilger
i=yangsheng

libcfs/autoconf/lustre-libcfs.m4
libcfs/libcfs/linux/linux-debug.c

index 6932513..e888679 100644 (file)
@@ -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 <asm/stacktrace.h>
+       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
 ])
 
 #
index 3c60f6e..363ec8c 100644 (file)
@@ -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