xref: /linux/tools/testing/selftests/ftrace/test.d/ftrace/func_stack_tracer.tc (revision 4b4193256c8d3bc3a5397b5cd9494c2ad386317d)
147c509d3SMasami Hiramatsu#!/bin/sh
247c509d3SMasami Hiramatsu# SPDX-License-Identifier: GPL-2.0
347c509d3SMasami Hiramatsu# description: ftrace - Max stack tracer
4*74e60728SMasami Hiramatsu# requires: stack_trace stack_trace_filter
547c509d3SMasami Hiramatsu# Test the basic function of max-stack usage tracing
647c509d3SMasami Hiramatsu
747c509d3SMasami Hiramatsuecho > stack_trace_filter
847c509d3SMasami Hiramatsuecho 0 > stack_max_size
947c509d3SMasami Hiramatsuecho 1 > /proc/sys/kernel/stack_tracer_enabled
1047c509d3SMasami Hiramatsu
1147c509d3SMasami Hiramatsu: "Fork and wait for the first entry become !lock"
1247c509d3SMasami Hiramatsutimeout=10
1347c509d3SMasami Hiramatsuwhile [ $timeout -ne 0 ]; do
1447c509d3SMasami Hiramatsu  ( echo "forked" )
1547c509d3SMasami Hiramatsu  FL=`grep " 0)" stack_trace`
1647c509d3SMasami Hiramatsu  echo $FL | grep -q "lock" || break;
1747c509d3SMasami Hiramatsu  timeout=$((timeout - 1))
1847c509d3SMasami Hiramatsudone
1947c509d3SMasami Hiramatsuecho 0 > /proc/sys/kernel/stack_tracer_enabled
2047c509d3SMasami Hiramatsu
2147c509d3SMasami Hiramatsuecho '*lock*' > stack_trace_filter
2247c509d3SMasami Hiramatsutest `cat stack_trace_filter | wc -l` -eq `grep lock stack_trace_filter | wc -l`
2347c509d3SMasami Hiramatsu
2447c509d3SMasami Hiramatsuecho 0 > stack_max_size
2547c509d3SMasami Hiramatsuecho 1 > /proc/sys/kernel/stack_tracer_enabled
2647c509d3SMasami Hiramatsu
2747c509d3SMasami Hiramatsu: "Fork and always the first entry including lock"
2847c509d3SMasami Hiramatsutimeout=10
2947c509d3SMasami Hiramatsuwhile [ $timeout -ne 0 ]; do
3047c509d3SMasami Hiramatsu  ( echo "forked" )
3147c509d3SMasami Hiramatsu  FL=`grep " 0)" stack_trace`
3247c509d3SMasami Hiramatsu  echo $FL | grep -q "lock"
3347c509d3SMasami Hiramatsu  timeout=$((timeout - 1))
3447c509d3SMasami Hiramatsudone
3547c509d3SMasami Hiramatsuecho 0 > /proc/sys/kernel/stack_tracer_enabled
36