exception.h 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. /* Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
  2. *
  3. * This program is free software; you can redistribute it and/or modify
  4. * it under the terms of the GNU General Public License version 2 and
  5. * only version 2 as published by the Free Software Foundation.
  6. *
  7. * This program is distributed in the hope that it will be useful,
  8. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. * GNU General Public License for more details.
  11. */
  12. #undef TRACE_SYSTEM
  13. #define TRACE_SYSTEM exception
  14. #if !defined(_TRACE_EXCEPTION_H) || defined(TRACE_HEADER_MULTI_READ)
  15. #define _TRACE_EXCEPTION_H
  16. #include <linux/tracepoint.h>
  17. struct task_struct;
  18. TRACE_EVENT(user_fault,
  19. TP_PROTO(struct task_struct *tsk, unsigned long addr, unsigned int fsr),
  20. TP_ARGS(tsk, addr, fsr),
  21. TP_STRUCT__entry(
  22. __string(task_name, tsk->comm)
  23. __field(unsigned long, addr)
  24. __field(unsigned int, fsr)
  25. ),
  26. TP_fast_assign(
  27. __assign_str(task_name, tsk->comm)
  28. __entry->addr = addr;
  29. __entry->fsr = fsr;
  30. ),
  31. TP_printk("task_name:%s addr:%lu, fsr:%u", __get_str(task_name),\
  32. __entry->addr, __entry->fsr)
  33. );
  34. struct pt_regs;
  35. TRACE_EVENT(undef_instr,
  36. TP_PROTO(struct pt_regs *regs, void *prog_cnt),
  37. TP_ARGS(regs, prog_cnt),
  38. TP_STRUCT__entry(
  39. __field(void *, prog_cnt)
  40. __field(struct pt_regs *, regs)
  41. ),
  42. TP_fast_assign(
  43. __entry->regs = regs;
  44. __entry->prog_cnt = prog_cnt;
  45. ),
  46. TP_printk("pc:%p", __entry->prog_cnt)
  47. );
  48. TRACE_EVENT(unhandled_abort,
  49. TP_PROTO(struct pt_regs *regs, unsigned long addr, unsigned int fsr),
  50. TP_ARGS(regs, addr, fsr),
  51. TP_STRUCT__entry(
  52. __field(struct pt_regs *, regs)
  53. __field(unsigned long, addr)
  54. __field(unsigned int, fsr)
  55. ),
  56. TP_fast_assign(
  57. __entry->regs = regs;
  58. __entry->addr = addr;
  59. __entry->fsr = fsr;
  60. ),
  61. TP_printk("addr:%lu, fsr:%u", __entry->addr, __entry->fsr)
  62. );
  63. #endif
  64. #include <trace/define_trace.h>