summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWenji Huang <wenji.huang@oracle.com>2010-01-11 13:01:54 +0800
committerWenji Huang <wenji.huang@oracle.com>2010-01-11 13:01:54 +0800
commitfb16f8fece2a2d96cc66de5738bdf578a21fcaae (patch)
tree3c59c5fecb2bc9bb5ef49a0ebfdef81465d49595
parentc116c31bfdaec3c9d5adbe892d8a1d145b6fcfc2 (diff)
downloadsystemtap-steved-fb16f8fece2a2d96cc66de5738bdf578a21fcaae.tar.gz
systemtap-steved-fb16f8fece2a2d96cc66de5738bdf578a21fcaae.tar.xz
systemtap-steved-fb16f8fece2a2d96cc66de5738bdf578a21fcaae.zip
Add stack walking function for 2.6.33
* runtime/stack.c (walk_context_stack): New function. (print_stack_ops): Add function pointer.
-rw-r--r--runtime/stack.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/runtime/stack.c b/runtime/stack.c
index 612fa010..7dfeb76a 100644
--- a/runtime/stack.c
+++ b/runtime/stack.c
@@ -94,11 +94,25 @@ static void print_stack_address(void *data, unsigned long addr, int reliable)
_stp_func_print(addr, sdata->verbose, 0, NULL);
}
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,32)
+static unsigned long
+walk_context_stack(struct thread_info *tinfo,
+ unsigned long *stack, unsigned long bp,
+ const struct stacktrace_ops *ops, void *data,
+ unsigned long *end, int *graph)
+{
+ return 0 ;
+}
+#endif
+
static const struct stacktrace_ops print_stack_ops = {
.warning = print_stack_warning,
.warning_symbol = print_stack_warning_symbol,
.stack = print_stack_stack,
.address = print_stack_address,
+#if LINUX_VERSION_CODE > KERNEL_VERSION(2,6,32)
+ .walk_stack = walk_context_stack,
+#endif
};
static void _stp_stack_print_fallback(unsigned long stack, int verbose, int levels)