tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc

Source file repositories/reference/linux-study-clean/tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc

File Facts

System
Linux kernel
Corpus path
tools/testing/selftests/ftrace/test.d/ftrace/func_event_triggers.tc
Extension
.tc
Size
2654 bytes
Lines
124
Domain
Support Tooling And Documentation
Bucket
tools
Inferred role
Support Tooling And Documentation: tools
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

#!/bin/sh
# SPDX-License-Identifier: GPL-2.0
# description: ftrace - test for function event triggers
# flags: instance
#
# The triggers are set within the set_ftrace_filter file
# requires: set_ftrace_filter
#
# Ftrace allows to add triggers to functions, such as enabling or disabling
# tracing, enabling or disabling trace events, or recording a stack trace
# within the ring buffer.
#
# This test is designed to test event triggers

do_reset() {
    reset_ftrace_filter
    reset_tracer
    disable_events
    clear_trace
    enable_tracing
}

fail() { # mesg
    echo $1
    exit_fail
}

SLEEP_TIME=".1"

echo "Testing function probes with events:"

EVENT="sched:sched_switch"
EVENT_ENABLE="events/sched/sched_switch/enable"

cnt_trace() {
    grep -v '^#' trace | wc -l
}

test_event_enabled() {
    val=$1
    check_times=10		# wait for 10 * SLEEP_TIME at most

    while [ $check_times -ne 0 ]; do
	e=`cat $EVENT_ENABLE`
	if [ "$e" = $val ]; then
	    return 0
	fi
	sleep $SLEEP_TIME
	check_times=$((check_times - 1))
    done

    fail "Expected $val but found $e"
}

run_enable_disable() {
    enable=$1			# enable
    Enable=$2			# Enable
    check_disable=$3		# 0
    check_enable_star=$4	# 1*
    check_disable_star=$5	# 0*

    cnt=`cnt_trace`
    if [ $cnt -ne 0 ]; then
	fail "Found junk in trace file"
    fi

    echo "$Enable event all the time"

    echo $check_disable > $EVENT_ENABLE
    sleep $SLEEP_TIME

Annotation

Implementation Notes