functions 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. clear_trace() { # reset trace output
  2. echo > trace
  3. }
  4. disable_tracing() { # stop trace recording
  5. echo 0 > tracing_on
  6. }
  7. enable_tracing() { # start trace recording
  8. echo 1 > tracing_on
  9. }
  10. reset_tracer() { # reset the current tracer
  11. echo nop > current_tracer
  12. }
  13. reset_trigger_file() {
  14. # remove action triggers first
  15. grep -H ':on[^:]*(' $@ |
  16. while read line; do
  17. cmd=`echo $line | cut -f2- -d: | cut -f1 -d"["`
  18. file=`echo $line | cut -f1 -d:`
  19. echo "!$cmd" >> $file
  20. done
  21. grep -Hv ^# $@ |
  22. while read line; do
  23. cmd=`echo $line | cut -f2- -d: | cut -f1 -d"["`
  24. file=`echo $line | cut -f1 -d:`
  25. echo "!$cmd" > $file
  26. done
  27. }
  28. reset_trigger() { # reset all current setting triggers
  29. if [ -d events/synthetic ]; then
  30. reset_trigger_file events/synthetic/*/trigger
  31. fi
  32. reset_trigger_file events/*/*/trigger
  33. }
  34. reset_events_filter() { # reset all current setting filters
  35. grep -v ^none events/*/*/filter |
  36. while read line; do
  37. echo 0 > `echo $line | cut -f1 -d:`
  38. done
  39. }
  40. reset_ftrace_filter() { # reset all triggers in set_ftrace_filter
  41. echo > set_ftrace_filter
  42. grep -v '^#' set_ftrace_filter | while read t; do
  43. tr=`echo $t | cut -d: -f2`
  44. if [ "$tr" = "" ]; then
  45. continue
  46. fi
  47. if ! grep -q "$t" set_ftrace_filter; then
  48. continue;
  49. fi
  50. name=`echo $t | cut -d: -f1 | cut -d' ' -f1`
  51. if [ $tr = "enable_event" -o $tr = "disable_event" ]; then
  52. tr=`echo $t | cut -d: -f2-4`
  53. limit=`echo $t | cut -d: -f5`
  54. else
  55. tr=`echo $t | cut -d: -f2`
  56. limit=`echo $t | cut -d: -f3`
  57. fi
  58. if [ "$limit" != "unlimited" ]; then
  59. tr="$tr:$limit"
  60. fi
  61. echo "!$name:$tr" > set_ftrace_filter
  62. done
  63. }
  64. disable_events() {
  65. echo 0 > events/enable
  66. }
  67. clear_synthetic_events() { # reset all current synthetic events
  68. grep -v ^# synthetic_events |
  69. while read line; do
  70. echo "!$line" >> synthetic_events
  71. done
  72. }
  73. initialize_ftrace() { # Reset ftrace to initial-state
  74. # As the initial state, ftrace will be set to nop tracer,
  75. # no events, no triggers, no filters, no function filters,
  76. # no probes, and tracing on.
  77. disable_tracing
  78. reset_tracer
  79. reset_trigger
  80. reset_events_filter
  81. disable_events
  82. echo > set_event_pid # event tracer is always on
  83. [ -f set_ftrace_filter ] && echo | tee set_ftrace_*
  84. [ -f set_graph_function ] && echo | tee set_graph_*
  85. [ -f stack_trace_filter ] && echo > stack_trace_filter
  86. [ -f kprobe_events ] && echo > kprobe_events
  87. [ -f uprobe_events ] && echo > uprobe_events
  88. enable_tracing
  89. }