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