stacktrace.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #ifndef _ASM_X86_STACKTRACE_H
  2. #define _ASM_X86_STACKTRACE_H
  3. extern int kstack_depth_to_print;
  4. struct thread_info;
  5. struct stacktrace_ops;
  6. typedef unsigned long (*walk_stack_t)(struct thread_info *tinfo,
  7. unsigned long *stack,
  8. unsigned long bp,
  9. const struct stacktrace_ops *ops,
  10. void *data,
  11. unsigned long *end,
  12. int *graph);
  13. extern unsigned long
  14. print_context_stack(struct thread_info *tinfo,
  15. unsigned long *stack, unsigned long bp,
  16. const struct stacktrace_ops *ops, void *data,
  17. unsigned long *end, int *graph);
  18. extern unsigned long
  19. print_context_stack_bp(struct thread_info *tinfo,
  20. unsigned long *stack, unsigned long bp,
  21. const struct stacktrace_ops *ops, void *data,
  22. unsigned long *end, int *graph);
  23. /* Generic stack tracer with callbacks */
  24. struct stacktrace_ops {
  25. void (*warning)(void *data, char *msg);
  26. /* msg must contain %s for the symbol */
  27. void (*warning_symbol)(void *data, char *msg, unsigned long symbol);
  28. void (*address)(void *data, unsigned long address, int reliable);
  29. /* On negative return stop dumping */
  30. int (*stack)(void *data, char *name);
  31. walk_stack_t walk_stack;
  32. };
  33. void dump_trace(struct task_struct *tsk, struct pt_regs *regs,
  34. unsigned long *stack, unsigned long bp,
  35. const struct stacktrace_ops *ops, void *data);
  36. #endif /* _ASM_X86_STACKTRACE_H */