File Index
Files and directories
Sign in
FILE

ftrace.sh

File preview with syntax highlighting.

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