1# How to use: 2#@sh CreateKsym.sh 3# step: 4# 1. build utpa2k.ko first 5# 2. run script 6# 3. (if necessary) fix symbol which is exported twice 7# 4. mv Ksym/Ksym.c to /modules/msos/msos/linux_kernel_V2 8# 5. rebuild utpa2k.ko 9 10function CreateKsymCFile() 11{ 12 if [ -e Ksym ];then 13 rm -rf Ksym 14 fi 15 rm -f nm_symbol.txt preprocess.txt 16 mkdir Ksym 17 echo "#include \"MsTypes.h\"" >> Ksym/Ksym.c 18 echo "#include \"MsCommon.h\"" >> Ksym/Ksym.c 19 echo "#include \"MLog.h\"" >> Ksym/Ksym.c 20 echo "#include \"apiACP.h\"" >> Ksym/Ksym.c 21 echo "#include \"apiAUDIO.h\"" >> Ksym/Ksym.c 22 echo "#include \"apiCEC.h\"" >> Ksym/Ksym.c 23 echo "#include \"apiDAC.h\"" >> Ksym/Ksym.c 24 echo "#include \"apiDMS.h\"" >> Ksym/Ksym.c 25 echo "#include \"apiDMX.h\"" >> Ksym/Ksym.c 26 echo "#include \"apiDMX_tee.h\"" >> Ksym/Ksym.c 27 echo "#include \"apiDMX_tsio.h\"" >> Ksym/Ksym.c 28 echo "#include \"apiGFX.h\"" >> Ksym/Ksym.c 29 echo "#include \"apiGOP.h\"" >> Ksym/Ksym.c 30 echo "#include \"apiGOPSC_Ex.h\"" >> Ksym/Ksym.c 31 echo "#include \"apiGOP_SC.h\"" >> Ksym/Ksym.c 32 echo "#include \"apiGPD.h\"" >> Ksym/Ksym.c 33 echo "#include \"apiGPD_v2.h\"" >> Ksym/Ksym.c 34 echo "#include \"apiHDMITx.h\"" >> Ksym/Ksym.c 35 echo "#include \"apiHDMITx2.h\"" >> Ksym/Ksym.c 36 echo "#include \"apiJPEG.h\"" >> Ksym/Ksym.c 37 echo "#include \"apiJPEG_v2.h\"" >> Ksym/Ksym.c 38 echo "#include \"apiLD.h\"" >> Ksym/Ksym.c 39 echo "#include \"drvMBX.h\"" >> Ksym/Ksym.c 40 echo "#include \"apiMFE_v2.h\"" >> Ksym/Ksym.c 41 echo "#include \"apiMHL.h\"" >> Ksym/Ksym.c 42 echo "#include \"apiPNL.h\"" >> Ksym/Ksym.c 43 echo "#include \"apiPNL_EX.h\"" >> Ksym/Ksym.c 44 echo "#include \"apiSWI2C.h\"" >> Ksym/Ksym.c 45 echo "#include \"apiVDEC.h\"" >> Ksym/Ksym.c 46 echo "#include \"apiVDEC_EX.h\"" >> Ksym/Ksym.c 47 echo "#include \"apiVDEC_EX_v2.h\"" >> Ksym/Ksym.c 48 echo "#include \"apiVOIPMFE.h\"" >> Ksym/Ksym.c 49 echo "#include \"apiXC.h\"" >> Ksym/Ksym.c 50 echo "#include \"apiXC_Ace.h\"" >> Ksym/Ksym.c 51 echo "#include \"apiXC_Ace_EX.h\"" >> Ksym/Ksym.c 52 echo "#include \"apiXC_Adc.h\"" >> Ksym/Ksym.c 53 echo "#include \"apiXC_EX.h\"" >> Ksym/Ksym.c 54 echo "#include \"apiXC_Adc_EX.h\"" >> Ksym/Ksym.c 55 echo "#include \"apiXC_Auto.h\"" >> Ksym/Ksym.c 56 echo "#include \"apiXC_Auto_EX.h\"" >> Ksym/Ksym.c 57 echo "#include \"apiXC_DWIN.h\"" >> Ksym/Ksym.c 58 echo "#include \"apiXC_PCMonitor.h\"" >> Ksym/Ksym.c 59 echo "#include \"apiXC_ModeParse.h\"" >> Ksym/Ksym.c 60 echo "#include \"apiXC_DWIN_EX.h\"" >> Ksym/Ksym.c 61 echo "#include \"apiXC_Dlc.h\"" >> Ksym/Ksym.c 62 echo "#include \"apiXC_ModeParse_EX.h\"" >> Ksym/Ksym.c 63 echo "#include \"apiXC_PCMonitor_EX.h\"" >> Ksym/Ksym.c 64 echo "#include \"apiXC_VMark.h\"" >> Ksym/Ksym.c 65 echo "#include \"apiXC_VMark_EX.h\"" >> Ksym/Ksym.c 66 echo "#include \"asmCPU.h\"" >> Ksym/Ksym.c 67 echo "#include \"drvAESDMA.h\"" >> Ksym/Ksym.c 68 echo "#include \"drvCIPHER.h\"" >> Ksym/Ksym.c 69 echo "#include \"drvAUDIO.h\"" >> Ksym/Ksym.c 70 echo "#include \"drvAVD.h\"" >> Ksym/Ksym.c 71 echo "#include \"drvBDMA.h\"" >> Ksym/Ksym.c 72 echo "#include \"drvCA.h\"" >> Ksym/Ksym.c 73 echo "#include \"drvCA_v2.h\"" >> Ksym/Ksym.c 74 echo "#include \"drvCH34.h\"" >> Ksym/Ksym.c 75 echo "#include \"drvCIPHER_v2.h\"" >> Ksym/Ksym.c 76 echo "#include \"drvCLKM.h\"" >> Ksym/Ksym.c 77 echo "#include \"drvCMAPool_v2.h\"" >> Ksym/Ksym.c 78 echo "#include \"drvCMDQ.h\"" >> Ksym/Ksym.c 79 echo "#include \"drvCPU.h\"" >> Ksym/Ksym.c 80 echo "#include \"drvDDC2BI.h\"" >> Ksym/Ksym.c 81 echo "#include \"drvDIP.h\"" >> Ksym/Ksym.c 82 echo "#include \"drvDMD_ATSC.h\"" >> Ksym/Ksym.c 83 echo "#include \"drvDMD_ATSC_v2.h\"" >> Ksym/Ksym.c 84 echo "#include \"drvDMD_DTMB.h\"" >> Ksym/Ksym.c 85 echo "#include \"drvDMD_DTMB_v2.h\"" >> Ksym/Ksym.c 86 echo "#include \"drvDMD_common.h\"" >> Ksym/Ksym.c 87 echo "#include \"drvDMD_ISDBT.h\"" >> Ksym/Ksym.c 88 echo "#include \"drvDMD_ISDBT_v2.h\"" >> Ksym/Ksym.c 89 echo "#include \"drvDMD_VD_MBX.h\"" >> Ksym/Ksym.c 90 echo "#include \"drvDMD_INTERN_ATSC.h\"" >> Ksym/Ksym.c 91 echo "#include \"drvDMD_INTERN_DVBC.h\"" >> Ksym/Ksym.c 92 echo "#include \"drvDMD_INTERN_DVBC_v2.h\"" >> Ksym/Ksym.c 93 echo "#include \"drvDMD_INTERN_DVBS.h\"" >> Ksym/Ksym.c 94 echo "#include \"drvDMD_INTERN_DVBS_v2.h\"" >> Ksym/Ksym.c 95 echo "#include \"drvDMD_INTERN_DVBT.h\"" >> Ksym/Ksym.c 96 echo "#include \"drvDMD_INTERN_DVBT_v2.h\"" >> Ksym/Ksym.c 97 echo "#include \"drvDMD_INTERN_DVBT2.h\"" >> Ksym/Ksym.c 98 echo "#include \"drvDMD_INTERN_DVBT2_v2.h\"" >> Ksym/Ksym.c 99 echo "#include \"drvDSCMB.h\"" >> Ksym/Ksym.c 100 echo "#include \"drvDSCMB_v2.h\"" >> Ksym/Ksym.c 101 echo "#include \"drvEMMFlt.h\"" >> Ksym/Ksym.c 102 echo "#include \"drvGPIO.h\"" >> Ksym/Ksym.c 103 echo "#include \"drvHDCP.h\"" >> Ksym/Ksym.c 104 echo "#include \"drvHVD.h\"" >> Ksym/Ksym.c 105 echo "#include \"drvHWI2C.h\"" >> Ksym/Ksym.c 106 echo "#include \"drvIPAUTH.h\"" >> Ksym/Ksym.c 107 echo "#include \"drvIR.h\"" >> Ksym/Ksym.c 108 echo "#include \"drvIRQ.h\"" >> Ksym/Ksym.c 109 echo "#include \"drvLDM.h\"" >> Ksym/Ksym.c 110 echo "#include \"drvMFC.h\"" >> Ksym/Ksym.c 111 echo "#include \"drvMIU.h\"" >> Ksym/Ksym.c 112 echo "#include \"drvMMIO.h\"" >> Ksym/Ksym.c 113 echo "#include \"drvMPIF.h\"" >> Ksym/Ksym.c 114 echo "#include \"drvMSPI.h\"" >> Ksym/Ksym.c 115 echo "#include \"drvMVD.h\"" >> Ksym/Ksym.c 116 echo "#include \"drvMVOP.h\"" >> Ksym/Ksym.c 117 echo "#include \"drvMVOP_v2.h\"" >> Ksym/Ksym.c 118 echo "#include \"drvNDS.h\"" >> Ksym/Ksym.c 119 echo "#include \"drvNSK2.h\"" >> Ksym/Ksym.c 120 echo "#include \"drvPARFLASH.h\"" >> Ksym/Ksym.c 121 echo "#include \"drvPCMCIA.h\"" >> Ksym/Ksym.c 122 echo "#include \"drvPM.h\"" >> Ksym/Ksym.c 123 echo "#include \"drvPQ.h\"" >> Ksym/Ksym.c 124 echo "#include \"drvPQ_cus.h\"" >> Ksym/Ksym.c 125 echo "#include \"drvPVR_IframeLUT.h\"" >> Ksym/Ksym.c 126 echo "#include \"drvPWM.h\"" >> Ksym/Ksym.c 127 echo "#include \"drvPWS.h\"" >> Ksym/Ksym.c 128 echo "#include \"drvRTC.h\"" >> Ksym/Ksym.c 129 echo "#include \"drvRVD.h\"" >> Ksym/Ksym.c 130 echo "#include \"drvSAR.h\"" >> Ksym/Ksym.c 131 echo "#include \"drvSC.h\"" >> Ksym/Ksym.c 132 echo "#include \"drvSEAL.h\"" >> Ksym/Ksym.c 133 echo "#include \"drvSEM.h\"" >> Ksym/Ksym.c 134 echo "#include \"drvSERFLASH.h\"" >> Ksym/Ksym.c 135 echo "#include \"drvSMBX.h\"" >> Ksym/Ksym.c 136 echo "#include \"drvSYS.h\"" >> Ksym/Ksym.c 137 echo "#include \"drvTCF.h\"" >> Ksym/Ksym.c 138 echo "#include \"drvTVEncoder.h\"" >> Ksym/Ksym.c 139 echo "#include \"drvUART.h\"" >> Ksym/Ksym.c 140 echo "#include \"drvURDMA.h\"" >> Ksym/Ksym.c 141 echo "#include \"drvVBI.h\"" >> Ksym/Ksym.c 142 echo "#include \"drvVIF.h\"" >> Ksym/Ksym.c 143 echo "#include \"drvWBLE.h\"" >> Ksym/Ksym.c 144 echo "#include \"drvWDT.h\"" >> Ksym/Ksym.c 145 echo "#include \"drvXC_HDMI_if.h\"" >> Ksym/Ksym.c 146 echo "#include \"drvXC_HDMI_if_EX.h\"" >> Ksym/Ksym.c 147 echo "#include \"drv_IR_TX.h\"" >> Ksym/Ksym.c 148 echo "#include \"drv_gop_sc.h\"" >> Ksym/Ksym.c 149 echo "#include \"apiGFX.h\"" >> Ksym/Ksym.c 150 echo "#include \"apiVDEC_EX.h\"" >> Ksym/Ksym.c 151 echo "#include \"apiXC.h\"" >> Ksym/Ksym.c 152 echo "#include \"drvCIPHER.h\"" >> Ksym/Ksym.c 153 echo "#include \"drvDMD_common.h\"" >> Ksym/Ksym.c 154 echo "#include \"drvLDM.h\"" >> Ksym/Ksym.c 155 echo "#include \"drvSAR.h\"" >> Ksym/Ksym.c 156 echo "#include \"drvTVEncoder.h\"" >> Ksym/Ksym.c 157 echo "#include \"MsOS.h\"" >> Ksym/Ksym.c 158 echo "#include \"apiAUDIO.h\"" >> Ksym/Ksym.c 159 echo "#include \"apiDAC.h\"" >> Ksym/Ksym.c 160 echo "#include \"apiDMS.h\"" >> Ksym/Ksym.c 161 echo "#include \"apiDMX.h\"" >> Ksym/Ksym.c 162 echo "#include \"apiGOP.h\"" >> Ksym/Ksym.c 163 echo "#include \"apiPNL.h\"" >> Ksym/Ksym.c 164 echo "#include \"apiXC.h\"" >> Ksym/Ksym.c 165 echo "#include \"apiXC_DWIN.h\"" >> Ksym/Ksym.c 166 echo "#include \"apiXC_Dlc.h\"" >> Ksym/Ksym.c 167 echo "#include \"drvDMD_ATSC.h\"" >> Ksym/Ksym.c 168 echo "#include \"drvMVOP.h\"" >> Ksym/Ksym.c 169 echo "#include \"apiGOP.h\"" >> Ksym/Ksym.c 170 echo "#include \"apiXC_DBC.h\"" >> Ksym/Ksym.c 171 echo "#include \"apiMBX.h\"" >> Ksym/Ksym.c 172 echo "#include \"cusSAR.h\"" >> Ksym/Ksym.c 173 arm-none-linux-gnueabi-nm utpa2k.ko | grep " T " | awk '{print $3}' | grep "^M[Dd]rv\|^M[Aa]pi\|^MsOS" | awk '{print "EXPORT_SYMBOL("$1");"}' > nm_symbol.txt 174 find $PWD/../../mxlib/include/ -name "*.h" | xargs gcc -fpreprocessed -dD -E > preprocess.txt 175 find $PWD/../../modules/pq -name "drvPQ.h" | xargs gcc -fpreprocessed -dD -E >> preprocess.txt 176 find $PWD/../../modules/pq -name "drvPQ_cus.h" | xargs gcc -fpreprocessed -dD -E >> preprocess.txt 177 grep "^\s*\#if\|^\s*\#ifdef\|^\s*\#else\|^\s*\#elif\|^\s*\#endif\|\s\s*\**M[Dd]rv_.*[;,]$\|\s\s*\**M[Aa]pi_.*[;,]$\|\s\s*MsOS_.*[;,]$" preprocess.txt | \ 178 sed 's/^[ ]*//g' | \ 179 grep -v "\#define\|typedef" | \ 180 grep -v "\\\\" | \ 181 awk 'BEGIN{FS="("}{if(substr($1,1,1)=="#"){print}else{if(NF>1){for(i=1;i<=(NF-1);i++){if((match($i,"M[Dd]rv_")>0)||(match($i,"M[Aa]pi_")>0)||(match($i,"MsOS_")>0))print $i}}}}' | \ 182 sed 's/[*]*//g' | \ 183 awk '{if(substr($1,1,1)=="#"){print}else{print "EXPORT_SYMBOL("$NF");";}}' \ 184 >> Ksym/Ksym.c 185 mv Ksym/Ksym.c Ksym/Ksym_tmp.c 186 while read line 187 do 188 echo $line | grep "^\#ifndef.*_H_$\|^\#ifndef.*_H$\|^\#ifndef.*_H__$" -q 189 if [ $? == "0" ] ; then 190 echo $line | sed 's/#ifndef/#ifdef/g' >> Ksym/Ksym.c 191 continue 192 fi 193 echo $line | grep "^#" -q 194 if [ $? == "0" ] ; then 195 echo $line >> Ksym/Ksym.c 196 continue 197 fi 198 grep "$line" nm_symbol.txt -q 199 if [ $? == "0" ] ; then 200 echo $line >> Ksym/Ksym.c 201 fi 202 done < Ksym/Ksym_tmp.c 203 rm Ksym/Ksym_tmp.c 204# exception start 205# function 206 echo "EXPORT_SYMBOL(mdrv_gpio_set_high);" >> Ksym/Ksym.c 207 echo "EXPORT_SYMBOL(mdrv_gpio_set_low);" >> Ksym/Ksym.c 208 echo "EXPORT_SYMBOL(mdrv_gpio_set_input);" >> Ksym/Ksym.c 209 echo "EXPORT_SYMBOL(mdrv_gpio_init);" >> Ksym/Ksym.c 210 echo "EXPORT_SYMBOL(mdrv_gpio_get_level);" >> Ksym/Ksym.c 211 echo "EXPORT_SYMBOL(mdrv_gpio_get_inout);" >> Ksym/Ksym.c 212 echo "EXPORT_SYMBOL(MAsm_CPU_GetTrailOne);" >> Ksym/Ksym.c 213 echo "EXPORT_SYMBOL(MsAPI_CecTxSendPollingMsg);" >> Ksym/Ksym.c 214# global var 215 echo "EXPORT_SYMBOL(g_IPanel);" >> Ksym/Ksym.c 216 echo "EXPORT_SYMBOL(g_IPanelEx);" >> Ksym/Ksym.c 217 echo "EXPORT_SYMBOL(g_ACPMissingCounter);" >> Ksym/Ksym.c 218 echo "EXPORT_SYMBOL(g_AVMUTEMissingCounter);" >> Ksym/Ksym.c 219 echo "EXPORT_SYMBOL(g_AVIMissingCounter);" >> Ksym/Ksym.c 220 echo "EXPORT_SYMBOL(g_HdmiPollingStatus);" >> Ksym/Ksym.c 221# exception end 222} 223CreateKsymCFile 224