/
usr
/
src
/
snapapi26-0.8.15
/
File Upload :
llllll
Current File: //usr/src/snapapi26-0.8.15/snapapi_genconfig.sh
#!/bin/bash KERNELVER=$1 CURR_KERNELVER="$(uname -r)" if [ ! -z $KERNELVER ]; then KERNEL_VERSION=$KERNELVER else KERNEL_VERSION=$CURR_KERNELVER fi OUTPUT_FILE=kernel_config.h SYSTEM_MAP_DIRS=(/lib/modules/${KERNEL_VERSION}/ /usr/lib/debug/boot/ /boot/) ACRONIS_SYSTEM_MAPS_DIR=/usr/lib/Acronis/SnapAPIFiles/SystemMaps/ SYSTEM_MAP_MINSIZE=1000 function find_system_map() { local dir=$1 if [ -e $dir/System.map-${KERNEL_VERSION} ] ;then SYSTEM_MAP_FILE_TMP=$dir/System.map-${KERNEL_VERSION} elif [ -e $dir/System.map ] ;then SYSTEM_MAP_FILE_TMP=$dir/System.map fi if [ ! -z ${SYSTEM_MAP_FILE_TMP} ]; then local size=$(stat -c%s "${SYSTEM_MAP_FILE_TMP}") if (( $size > ${SYSTEM_MAP_MINSIZE} )); then SYSTEM_MAP_FILE=${SYSTEM_MAP_FILE_TMP} fi fi } function get_acronis_system_map { boot_cfg_md5=( $(md5sum /boot/config-${KERNEL_VERSION}) ) if [ -e ${ACRONIS_SYSTEM_MAPS_DIR}/System.map-${KERNEL_VERSION}-$boot_cfg_md5 ]; then SYSTEM_MAP_FILE=${ACRONIS_SYSTEM_MAPS_DIR}/System.map-${KERNEL_VERSION}-$boot_cfg_md5 fi } function get_system_map_from_kallsyms() { local dir="$(pwd)" if [ -e /proc/kallsyms -a "$CURR_KERNELVER" = "$KERNELVER" ]; then local smap="System.map-${KERNEL_VERSION}.tmp" cat /proc/kallsyms > "${smap}" local size=$(stat -c%s "${smap}") if (( $size > ${SYSTEM_MAP_MINSIZE} )); then SYSTEM_MAP_FILE="${smap}" fi fi } for i in "${SYSTEM_MAP_DIRS[@]}"; do find_system_map $i if [ ! -z ${SYSTEM_MAP_FILE} ]; then break fi done if [ -z ${SYSTEM_MAP_FILE} ]; then get_acronis_system_map fi if [ -z ${SYSTEM_MAP_FILE} ]; then get_system_map_from_kallsyms fi if [ -z "${SYSTEM_MAP_FILE}" ]; then echo "Cannot find System.map file." exit 0 fi rm -f ${OUTPUT_FILE} echo "Generate \"${OUTPUT_FILE}\" for kernel \"${KERNEL_VERSION}\" and system map \"${SYSTEM_MAP_FILE}\"." echo "#ifndef SNAPAPI_KERNEL_CONFIG" >> ${OUTPUT_FILE} echo "#define SNAPAPI_KERNEL_CONFIG" >> ${OUTPUT_FILE} if [ -n "${SYSTEM_MAP_FILE}" ]; then echo "#define SNAPAPI_SYSTEM_MAP \"${SYSTEM_MAP_FILE}\"" >> ${OUTPUT_FILE} SYMBOLS="printk blk_mq_submit_bio _printk" for SYMBOL_NAME in ${SYMBOLS} do SYMBOL_ADDR=$(grep " ${SYMBOL_NAME}$" "${SYSTEM_MAP_FILE}" | awk '{print $1}') if [ -z "${SYMBOL_ADDR}" ] then echo "Function \"${SYMBOL_NAME}\" not found" else MACRO_NAME="$(echo ${SYMBOL_NAME} | awk '{print toupper($0)}')_ADDR" echo "#define ${MACRO_NAME} 0x${SYMBOL_ADDR}" >> ${OUTPUT_FILE} echo "Address of the function \"${SYMBOL_NAME}\" was defined" fi done fi # the end of the config file echo "#endif" >> ${OUTPUT_FILE}
Copyright ©2k19 -
Hexid
|
Tex7ure