1f08c3bdfSopenharmony_ci# 2f08c3bdfSopenharmony_ci# Function library: provide common functions 3f08c3bdfSopenharmony_ci# 4f08c3bdfSopenharmony_ci# Copyright (C) 2008, Intel Corp. 5f08c3bdfSopenharmony_ci# Author: Huang Ying <ying.huang@intel.com> 6f08c3bdfSopenharmony_ci# 7f08c3bdfSopenharmony_ci# This file is released under the GPLv2. 8f08c3bdfSopenharmony_ci# 9f08c3bdfSopenharmony_ci 10f08c3bdfSopenharmony_cisetup_path() 11f08c3bdfSopenharmony_ci{ 12f08c3bdfSopenharmony_ci export PATH=$ROOT/bin:$PATH 13f08c3bdfSopenharmony_ci} 14f08c3bdfSopenharmony_ci 15f08c3bdfSopenharmony_ciscript_dir() 16f08c3bdfSopenharmony_ci{ 17f08c3bdfSopenharmony_ci local rd=$(dirname "$0") 18f08c3bdfSopenharmony_ci (cd $rd; pwd) 19f08c3bdfSopenharmony_ci} 20f08c3bdfSopenharmony_ci 21f08c3bdfSopenharmony_cirelative_path() 22f08c3bdfSopenharmony_ci{ 23f08c3bdfSopenharmony_ci local len1=${#1} 24f08c3bdfSopenharmony_ci local len2=${#2} 25f08c3bdfSopenharmony_ci if [ $len1 -eq 0 -o $len1 -ge $len2 -o "${2:0:$len1}" != "$1" ]; then 26f08c3bdfSopenharmony_ci die "$2 is not the sub-path of $1!" 27f08c3bdfSopenharmony_ci fi 28f08c3bdfSopenharmony_ci len1=$((len1 + 1)) 29f08c3bdfSopenharmony_ci echo "${2:$len1}" 30f08c3bdfSopenharmony_ci} 31f08c3bdfSopenharmony_ci 32f08c3bdfSopenharmony_cidie() 33f08c3bdfSopenharmony_ci{ 34f08c3bdfSopenharmony_ci echo "DIE: $@" 35f08c3bdfSopenharmony_ci echo "DIE: $@" 1>&2 36f08c3bdfSopenharmony_ci exit -1 37f08c3bdfSopenharmony_ci} 38f08c3bdfSopenharmony_ci 39f08c3bdfSopenharmony_cidriver_prepare() 40f08c3bdfSopenharmony_ci{ 41f08c3bdfSopenharmony_ci mkdir -p $WDIR/stamps 42f08c3bdfSopenharmony_ci} 43f08c3bdfSopenharmony_ci 44f08c3bdfSopenharmony_cicheck_kern_warning_bug() 45f08c3bdfSopenharmony_ci{ 46f08c3bdfSopenharmony_ci local f="$1" 47f08c3bdfSopenharmony_ci [ -n "$f" ] || die "missing parameter for check_kern_warning" 48f08c3bdfSopenharmony_ci grep -e '----\[ cut here \]---' $f > /dev/null || \ 49f08c3bdfSopenharmony_ci grep -e 'BUG:' $f > /dev/null 50f08c3bdfSopenharmony_ci} 51f08c3bdfSopenharmony_ci 52f08c3bdfSopenharmony_cirandom_sleep() 53f08c3bdfSopenharmony_ci{ 54f08c3bdfSopenharmony_ci local s=$((RANDOM / 13107 + 5)) 55f08c3bdfSopenharmony_ci sleep $s 56f08c3bdfSopenharmony_ci} 57f08c3bdfSopenharmony_ci 58f08c3bdfSopenharmony_cistart_background() 59f08c3bdfSopenharmony_ci{ 60f08c3bdfSopenharmony_ci if [ -n "$BACKGROUND" ]; then 61f08c3bdfSopenharmony_ci pid_background=$(bash -i -c "$BACKGROUND &>$WDIR/background_log & echo \$!") 62f08c3bdfSopenharmony_ci if ! ps -p $pid_background > /dev/null; then 63f08c3bdfSopenharmony_ci die "Failed to start background testing: $BACKGROUND" 64f08c3bdfSopenharmony_ci fi 65f08c3bdfSopenharmony_ci fi 66f08c3bdfSopenharmony_ci} 67f08c3bdfSopenharmony_ci 68f08c3bdfSopenharmony_cistop_background() 69f08c3bdfSopenharmony_ci{ 70f08c3bdfSopenharmony_ci if [ -n "$pid_background" ]; then 71f08c3bdfSopenharmony_ci if ! kill -TERM -$pid_background &> /dev/null; then 72f08c3bdfSopenharmony_ci kill $pid_background || true 73f08c3bdfSopenharmony_ci fi 74f08c3bdfSopenharmony_ci fi 75f08c3bdfSopenharmony_ci} 76f08c3bdfSopenharmony_ci 77f08c3bdfSopenharmony_cifilter_fake_panic() 78f08c3bdfSopenharmony_ci{ 79f08c3bdfSopenharmony_ci local orig_klog=$1 80f08c3bdfSopenharmony_ci local new_klog=$2 81f08c3bdfSopenharmony_ci [ $# -eq 2 ] || die "missing parameter for filter_fake_panic" 82f08c3bdfSopenharmony_ci 83f08c3bdfSopenharmony_ci local pn 84f08c3bdfSopenharmony_ci pn=$(grep -n "Fake kernel panic" $orig_klog | cut -d ':' -f 1 | head -1) 85f08c3bdfSopenharmony_ci if [ -z "$pn" ]; then 86f08c3bdfSopenharmony_ci cp $orig_klog $new_klog 87f08c3bdfSopenharmony_ci else 88f08c3bdfSopenharmony_ci sed -n "1,${pn}p" < $orig_klog > $new_klog 89f08c3bdfSopenharmony_ci fi 90f08c3bdfSopenharmony_ci} 91