1f08c3bdfSopenharmony_ci#!/bin/sh 2f08c3bdfSopenharmony_ci 3f08c3bdfSopenharmony_ci########################################################################### 4f08c3bdfSopenharmony_ci## ## 5f08c3bdfSopenharmony_ci## Copyright (c) 2010 FUJITSU LIMITED ## 6f08c3bdfSopenharmony_ci## ## 7f08c3bdfSopenharmony_ci## This program is free software: you can redistribute it and/or modify ## 8f08c3bdfSopenharmony_ci## it under the terms of the GNU General Public License as published by ## 9f08c3bdfSopenharmony_ci## the Free Software Foundation, either version 3 of the License, or ## 10f08c3bdfSopenharmony_ci## (at your option) any later version. ## 11f08c3bdfSopenharmony_ci## ## 12f08c3bdfSopenharmony_ci## This program is distributed in the hope that it will be useful, ## 13f08c3bdfSopenharmony_ci## but WITHOUT ANY WARRANTY; without even the implied warranty of ## 14f08c3bdfSopenharmony_ci## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## 15f08c3bdfSopenharmony_ci## GNU General Public License for more details. ## 16f08c3bdfSopenharmony_ci## ## 17f08c3bdfSopenharmony_ci## You should have received a copy of the GNU General Public License ## 18f08c3bdfSopenharmony_ci## along with this program. If not, see <http://www.gnu.org/licenses/>. ## 19f08c3bdfSopenharmony_ci## ## 20f08c3bdfSopenharmony_ci## Author: Li Zefan <lizf@cn.fujitsu.com> ## 21f08c3bdfSopenharmony_ci## ## 22f08c3bdfSopenharmony_ci########################################################################### 23f08c3bdfSopenharmony_ci 24f08c3bdfSopenharmony_ci. test.sh 25f08c3bdfSopenharmony_ci 26f08c3bdfSopenharmony_ciftrace_test_init() 27f08c3bdfSopenharmony_ci{ 28f08c3bdfSopenharmony_ci export TPATH="$PWD" 29f08c3bdfSopenharmony_ci export SPATH="$TPATH/ftrace_stress" 30f08c3bdfSopenharmony_ci 31f08c3bdfSopenharmony_ci if grep -q debugfs /proc/mounts; then 32f08c3bdfSopenharmony_ci export DEBUGFS_PATH=/sys/kernel/debug/ 33f08c3bdfSopenharmony_ci export TRACING_PATH="$DEBUGFS_PATH/tracing" 34f08c3bdfSopenharmony_ci debugfs_def_mounted=1 35f08c3bdfSopenharmony_ci else 36f08c3bdfSopenharmony_ci tst_tmpdir 37f08c3bdfSopenharmony_ci export DEBUGFS_PATH="$PWD/debugfs" 38f08c3bdfSopenharmony_ci export TRACING_PATH="$PWD/debugfs/tracing" 39f08c3bdfSopenharmony_ci mkdir $DEBUGFS_PATH 40f08c3bdfSopenharmony_ci mount -t debugfs xxx $DEBUGFS_PATH 41f08c3bdfSopenharmony_ci fi 42f08c3bdfSopenharmony_ci 43f08c3bdfSopenharmony_ci TST_CLEANUP=clean_up 44f08c3bdfSopenharmony_ci 45f08c3bdfSopenharmony_ci trap clean_up_exit INT 46f08c3bdfSopenharmony_ci 47f08c3bdfSopenharmony_ci tst_require_root 48f08c3bdfSopenharmony_ci 49f08c3bdfSopenharmony_ci # Check to see tracing feature is supported or not 50f08c3bdfSopenharmony_ci if [ ! -d $TRACING_PATH ]; then 51f08c3bdfSopenharmony_ci tst_brkm TCONF "Tracing is not supported. Skip the test..." 52f08c3bdfSopenharmony_ci fi 53f08c3bdfSopenharmony_ci 54f08c3bdfSopenharmony_ci save_old_setting 55f08c3bdfSopenharmony_ci} 56f08c3bdfSopenharmony_ci 57f08c3bdfSopenharmony_citest_interval=$1 58f08c3bdfSopenharmony_ci 59f08c3bdfSopenharmony_cisave_old_setting() 60f08c3bdfSopenharmony_ci{ 61f08c3bdfSopenharmony_ci cd $TRACING_PATH 62f08c3bdfSopenharmony_ci 63f08c3bdfSopenharmony_ci old_trace_options=`cat trace_options` 64f08c3bdfSopenharmony_ci old_tracing_on=`cat tracing_on` 65f08c3bdfSopenharmony_ci old_buffer_size=`cat buffer_size_kb` 66f08c3bdfSopenharmony_ci old_tracing_cpumask=`cat tracing_cpumask` 67f08c3bdfSopenharmony_ci 68f08c3bdfSopenharmony_ci if [ -e tracing_cpumask ]; then 69f08c3bdfSopenharmony_ci old_tracing_cpumask=`cat tracing_cpumask` 70f08c3bdfSopenharmony_ci fi 71f08c3bdfSopenharmony_ci 72f08c3bdfSopenharmony_ci if [ -e tracing_enabled ]; then 73f08c3bdfSopenharmony_ci old_tracing_enabled=`cat tracing_enabled` 74f08c3bdfSopenharmony_ci fi 75f08c3bdfSopenharmony_ci 76f08c3bdfSopenharmony_ci if [ -e stack_max_size ]; then 77f08c3bdfSopenharmony_ci old_stack_tracer_enabled=`cat /proc/sys/kernel/stack_tracer_enabled` 78f08c3bdfSopenharmony_ci fi 79f08c3bdfSopenharmony_ci 80f08c3bdfSopenharmony_ci if [ -e "/proc/sys/kernel/ftrace_enabled" ]; then 81f08c3bdfSopenharmony_ci old_ftrace_enabled=`cat /proc/sys/kernel/ftrace_enabled` 82f08c3bdfSopenharmony_ci fi 83f08c3bdfSopenharmony_ci 84f08c3bdfSopenharmony_ci if [ -e "function_profile_enabled" ]; then 85f08c3bdfSopenharmony_ci old_profile_enabled=`cat function_profile_enabled` 86f08c3bdfSopenharmony_ci fi 87f08c3bdfSopenharmony_ci 88f08c3bdfSopenharmony_ci setting_saved=1 89f08c3bdfSopenharmony_ci 90f08c3bdfSopenharmony_ci cd - > /dev/null 91f08c3bdfSopenharmony_ci} 92f08c3bdfSopenharmony_ci 93f08c3bdfSopenharmony_cirestore_old_setting() 94f08c3bdfSopenharmony_ci{ 95f08c3bdfSopenharmony_ci if [ ! "$setting_saved" = 1 ]; then 96f08c3bdfSopenharmony_ci return 97f08c3bdfSopenharmony_ci fi 98f08c3bdfSopenharmony_ci 99f08c3bdfSopenharmony_ci cd $TRACING_PATH 100f08c3bdfSopenharmony_ci 101f08c3bdfSopenharmony_ci echo nop > current_tracer 102f08c3bdfSopenharmony_ci echo 0 > events/enable 103f08c3bdfSopenharmony_ci if [ -e tracing_max_latency ]; then 104f08c3bdfSopenharmony_ci echo 0 > tracing_max_latency 105f08c3bdfSopenharmony_ci fi 106f08c3bdfSopenharmony_ci 107f08c3bdfSopenharmony_ci if [ -e tracing_cpumask ]; then 108f08c3bdfSopenharmony_ci echo $old_tracing_cpumask > tracing_cpumask 109f08c3bdfSopenharmony_ci fi 110f08c3bdfSopenharmony_ci 111f08c3bdfSopenharmony_ci if [ -e trace_clock ]; then 112f08c3bdfSopenharmony_ci echo local > trace_clock 113f08c3bdfSopenharmony_ci fi 114f08c3bdfSopenharmony_ci 115f08c3bdfSopenharmony_ci if [ -e "function_pofile_enabled" ]; then 116f08c3bdfSopenharmony_ci echo $old_profile_enabled > function_profile_enabled 117f08c3bdfSopenharmony_ci fi 118f08c3bdfSopenharmony_ci 119f08c3bdfSopenharmony_ci if [ -e "/proc/sys/kernel/ftrace_enabled" ]; then 120f08c3bdfSopenharmony_ci echo $old_ftrace_enabled > /proc/sys/kernel/ftrace_enabled 121f08c3bdfSopenharmony_ci fi 122f08c3bdfSopenharmony_ci 123f08c3bdfSopenharmony_ci if [ -e stack_max_size ]; then 124f08c3bdfSopenharmony_ci echo $old_stack_tracer_enabled > /proc/sys/kernel/stack_tracer_enabled 125f08c3bdfSopenharmony_ci echo 0 > stack_max_size 126f08c3bdfSopenharmony_ci fi 127f08c3bdfSopenharmony_ci 128f08c3bdfSopenharmony_ci echo $old_buffer_size > buffer_size_kb 129f08c3bdfSopenharmony_ci echo $old_tracing_on > tracing_on 130f08c3bdfSopenharmony_ci 131f08c3bdfSopenharmony_ci if [ -e tracing_enabled ]; then 132f08c3bdfSopenharmony_ci echo $old_tracing_enabled > tracing_enabled 133f08c3bdfSopenharmony_ci fi 134f08c3bdfSopenharmony_ci 135f08c3bdfSopenharmony_ci for option in $old_trace_options; do 136f08c3bdfSopenharmony_ci echo $option > trace_options 2> /dev/null 137f08c3bdfSopenharmony_ci done 138f08c3bdfSopenharmony_ci 139f08c3bdfSopenharmony_ci echo > trace 140f08c3bdfSopenharmony_ci 141f08c3bdfSopenharmony_ci if [ -f set_ftrace_filter ]; then 142f08c3bdfSopenharmony_ci echo > set_ftrace_filter 143f08c3bdfSopenharmony_ci fi 144f08c3bdfSopenharmony_ci 145f08c3bdfSopenharmony_ci cd - > /dev/null 146f08c3bdfSopenharmony_ci} 147f08c3bdfSopenharmony_ci 148f08c3bdfSopenharmony_ciclean_up_mount() 149f08c3bdfSopenharmony_ci{ 150f08c3bdfSopenharmony_ci if [ ! "$debugfs_def_mounted" = "1" ]; then 151f08c3bdfSopenharmony_ci umount $DEBUGFS_PATH 152f08c3bdfSopenharmony_ci rmdir $DEBUGFS_PATH 153f08c3bdfSopenharmony_ci fi 154f08c3bdfSopenharmony_ci} 155f08c3bdfSopenharmony_ci 156f08c3bdfSopenharmony_ciclean_up() 157f08c3bdfSopenharmony_ci{ 158f08c3bdfSopenharmony_ci restore_old_setting 159f08c3bdfSopenharmony_ci clean_up_mount 160f08c3bdfSopenharmony_ci} 161f08c3bdfSopenharmony_ci 162f08c3bdfSopenharmony_ciclean_up_exit() 163f08c3bdfSopenharmony_ci{ 164f08c3bdfSopenharmony_ci restore_old_setting 165f08c3bdfSopenharmony_ci clean_up_mount 166f08c3bdfSopenharmony_ci exit 1 167f08c3bdfSopenharmony_ci} 168f08c3bdfSopenharmony_ci 169f08c3bdfSopenharmony_citest_begin() 170f08c3bdfSopenharmony_ci{ 171f08c3bdfSopenharmony_ci start_time=`date +%s` 172f08c3bdfSopenharmony_ci} 173f08c3bdfSopenharmony_ci 174f08c3bdfSopenharmony_citest_wait() 175f08c3bdfSopenharmony_ci{ 176f08c3bdfSopenharmony_ci # run the test for $test_interval secs 177f08c3bdfSopenharmony_ci tst_sleep ${test_interval}s 178f08c3bdfSopenharmony_ci} 179f08c3bdfSopenharmony_ci 180f08c3bdfSopenharmony_ciftrace_test_init 181