1#!/bin/bash 2################################################################################ 3# 4# Copyright (C) 2022 Huawei Device Co., Ltd. 5# SPDX-License-Identifier: GPL-2.0 6# 7# Unless required by applicable law or agreed to in writing, software 8# distributed under the License is distributed on an "AS IS" BASIS, 9# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 10# See the License for the specific language governing permissions and 11# limitations under the License. 12# 13################################################################################ 14# File: tracepoint.sh 15# 16# Description: test tracepoint 17# 18# Authors: yang ming di 19# 20# History: August 4 2022 - test tracepoint 21# 22################################################################################ 23 24set -e 25 26CURRENT_DIR=$(pwd) 27ROOT_DIR=$(cd ${CURRENT_DIR}/../../ && pwd) 28ROOT_FILE_DIR=${ROOT_DIR}/kernel/linux/build/test/tracepointtest 29COMPILE_DIR=${ROOT_DIR}/out/kernel/src_tmp/linux-5.10 30OBJ_DIR=${ROOT_DIR}/out/kernel/OBJ 31DRIVERS_DIR=${ROOT_DIR}/out/kernel/src_tmp/linux-5.10/drivers 32TRACEPOINT_INCLUDE_DIR=${ROOT_DIR}/out/kernel/src_tmp/linux-5.10/include/trace/hooks 33DRIVERS_TRACEPOINT_DIR=${ROOT_DIR}/out/kernel/src_tmp/linux-5.10/drivers/tracepointtest 34CONFIG_DIR=${ROOT_DIR}/out/kernel/src_tmp/linux-5.10/arch/arm64/configs 35 36copy() { 37 local SOURCE_PATH=$1 38 local TARGET_PATH=$2 39 echo "copy ${SOURCE_PATH} to ${TARGET_PATH}" 40 cp -rf ${SOURCE_PATH} ${TARGET_PATH} 41} 42 43modify_config() { 44 local SOURCE_FILE=$1 45 local TARGET_FILE=$2 46 if [ -e "${CONFIG_DIR}/tmp" ]; then 47 rm -f ${CONFIG_DIR}/tmp 48 fi 49 50 cp -f ${CONFIG_DIR}/${TARGET_FILE} ${CONFIG_DIR}/${TARGET_FILE}_tmpfile 51 52 while read line; do 53 echo "$line" >>${CONFIG_DIR}/tmp 54 done <${CONFIG_DIR}/${TARGET_FILE} 55 56 while read line; do 57 if [[ "$line" != "#"* ]]; then 58 echo "$line" >>${CONFIG_DIR}/tmp 59 fi 60 done <${SOURCE_FILE} 61 62 mv ${CONFIG_DIR}/tmp ${CONFIG_DIR}/${TARGET_FILE} 63} 64 65modify_files() { 66 local KCONFIG=${DRIVERS_DIR}/Kconfig 67 local MAKEFILE=${DRIVERS_DIR}/Makefile 68 local VENDOR_HOOKS=${DRIVERS_DIR}/hooks/vendor_hooks.c 69 local TMPFILE=${DRIVERS_DIR}/tmp 70 71 cp -f ${KCONFIG} ${KCONFIG}_tmpfile 72 cp -f ${MAKEFILE} ${MAKEFILE}_tmpfile 73 cp -f ${VENDOR_HOOKS} ${VENDOR_HOOKS}_tmpfile 74 75 if [ -e "${TMPFILE}" ]; then 76 rm -f ${TMPFILE} 77 fi 78 79 while read line; do 80 if [[ "$line" != "endmenu" ]]; then 81 echo "$line" >>${TMPFILE} 82 fi 83 done <${KCONFIG} 84 echo "source \"drivers/tracepointtest/Kconfig\"" >>${TMPFILE} 85 echo "endmenu" >>${TMPFILE} 86 mv ${TMPFILE} ${KCONFIG} 87 88 while read line; do 89 echo "$line" >>${TMPFILE} 90 done <${MAKEFILE} 91 echo "obj-y += tracepointtest/" >>${TMPFILE} 92 mv ${TMPFILE} ${MAKEFILE} 93 94 while read line; do 95 echo "$line" >>${TMPFILE} 96 done <${VENDOR_HOOKS} 97 echo "#include <trace/hooks/emmc.h>" >>${TMPFILE} 98 echo "EXPORT_TRACEPOINT_SYMBOL_GPL(vendor_aml_emmc_partition);" >>${TMPFILE} 99 echo "EXPORT_TRACEPOINT_SYMBOL_GPL(vendor_fake_boot_partition);" >>${TMPFILE} 100 mv ${TMPFILE} ${VENDOR_HOOKS} 101} 102 103compile() { 104 cd ${COMPILE_DIR} || exit 105 export PRODUCT_COMPANY=hihope 106 export DEVICE_NAME=rk3568 107 export DEVICE_COMPANY=rockchip 108 export PRODUCT_PATH=${ROOT_DIR}/out/kernel/vendor/hihope/rk3568 109 ./make-ohos.sh TB-RK3568X0 >null 110 if [ $? -ne 0 ]; then 111 echo "compile failed" 112 exit 1 113 else 114 echo "compile success" 115 fi 116} 117 118collect_ko() { 119 if [ -e "${OBJ_DIR}/kofiles" ]; then 120 rm -f ${OBJ_DIR}/kofiles 121 mkdir -p ${OBJ_DIR}/kofiles 122 else 123 mkdir -p ${OBJ_DIR}/kofiles 124 fi 125 126 find ${DRIVERS_TRACEPOINT_DIR} -name '*.ko' | xargs cp -t ${OBJ_DIR}/kofiles 127} 128 129restore() { 130 local CONFIGNAME=rockchip_linux_defconfig 131 local KCONFIG=${DRIVERS_DIR}/Kconfig 132 local MAKEFILE=${DRIVERS_DIR}/Makefile 133 local HEADERFILE=${TRACEPOINT_INCLUDE_DIR}/emmc.h 134 local VENDOR_HOOKS=${DRIVERS_DIR}/hooks/vendor_hooks.c 135 136 if [ -d "${DRIVERS_TRACEPOINT_DIR}" ]; then 137 rm -rf ${DRIVERS_TRACEPOINT_DIR} 138 fi 139 140 if [ -e "${HEADERFILE}" ]; then 141 rm -rf ${HEADERFILE} 142 fi 143 mv -f ${CONFIG_DIR}/${CONFIGNAME}_tmpfile ${CONFIG_DIR}/${CONFIGNAME} 144 mv -f ${KCONFIG}_tmpfile ${KCONFIG} 145 mv -f ${MAKEFILE}_tmpfile ${MAKEFILE} 146 mv -f ${VENDOR_HOOKS}_tmpfile ${VENDOR_HOOKS} 147 if [ -e "${COMPILE_DIR}/.lock" ]; then 148 rm -rf ${COMPILE_DIR}/.lock 149 fi 150} 151 152main() { 153 if [ -e "${COMPILE_DIR}/.lock" ]; then 154 restore 155 fi 156 157 echo "" >${COMPILE_DIR}/.lock 158 159 if [ -d "${DRIVERS_DIR}/tracepointtest" ]; then 160 rm -rf ${DRIVERS_DIR}/tracepointtest 161 mkdir -p ${DRIVERS_DIR}/tracepointtest 162 else 163 mkdir -p ${DRIVERS_DIR}/tracepointtest 164 fi 165 166 for dir in $(ls "${ROOT_FILE_DIR}"); do 167 if [ -d "${ROOT_FILE_DIR}/${dir}" ]; then 168 copy ${ROOT_FILE_DIR}/${dir} ${DRIVERS_TRACEPOINT_DIR}/${dir} 169 elif [[ "${dir}" == "Makefile" ]]; then 170 copy ${ROOT_FILE_DIR}/${dir} ${DRIVERS_TRACEPOINT_DIR}/${dir} 171 elif [[ "${dir}" == "Kconfig" ]]; then 172 copy ${ROOT_FILE_DIR}/${dir} ${DRIVERS_TRACEPOINT_DIR}/${dir} 173 elif [[ "${dir}" == *.h ]]; then 174 copy ${ROOT_FILE_DIR}/${dir} ${TRACEPOINT_INCLUDE_DIR}/${dir} 175 elif [[ "${dir}" == "rockchip_linux_defconfig" ]]; then 176 modify_config ${ROOT_FILE_DIR}/${dir} ${dir} 177 fi 178 done 179 180 modify_files 181 compile 182 collect_ko 183 restore 184} 185 186main 187