stacktrace.h 1.4 KB

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