1.前言
目的是找到ko_hi3518目錄下某個ko文件中是否存在某個函數定義的地方。
如:查找CMPI_CreateProc是在哪個驅動文件中實現的。
2.ko_hi3518目錄
acodec.ko hi3518_ai.ko hi3518_group.ko hi3518_rc.ko hi3518_vda.ko hidmac.ko load3518e wdt.ko clkcfg_hi3518.sh hi3518_ao.ko hi3518_h264e.ko hi3518_region.ko hi3518_venc.ko hifb.ko lowpower.sh extdrv hi3518_base.ko hi3518_isp.ko hi3518_sio.ko hi3518_viu.ko hi_rtc.ko mmz.ko
hi3518_adec.ko hi3518_chnl.ko hi3518_ive.ko hi3518_sys.ko hi3518_vou.ko hiuser.ko pinmux_hi3518.sh hi3518_aenc.ko hi3518_dsu.ko hi3518_jpege.ko hi3518_tde.ko hi3518_vpss.ko load3518 sysctl_hi3518.sh
3.函數被多處引用,但只有一個地方實現
arm-hisiv100nptl-linux-nm `ls *.ko` | grep "CMPI_CreateProc"
結果:
U CMPI_CreateProc
U CMPI_CreateProc
U CMPI_CreateProc
U CMPI_CreateProc
U CMPI_CreateProc
00000b88 T CMPI_CreateProc
000000e1 r __kstrtab_CMPI_CreateProc
00000024 r __ksymtab_CMPI_CreateProc
U CMPI_CreateProc
U CMPI_CreateProc
U CMPI_CreateProc
U CMPI_CreateProc
U CMPI_CreateProc
U CMPI_CreateProc
U CMPI_CreateProc
U CMPI_CreateProc
U CMPI_CreateProc
U CMPI_CreateProc
U CMPI_CreateProc
U CMPI_CreateProc
U CMPI_CreateProc
U CMPI_CreateProc
U CMPI_CreateProc
4.腳本命令
⑴命令
for i in `ls *.ko`; do echo $i && arm-hisiv100nptl-linux-nm $i | grep "T CMPI_CreateProc"; done
⑵ 執行結果
acodec.ko
hi3518_adec.ko
hi3518_aenc.ko
hi3518_ai.ko
hi3518_ao.ko
hi3518_base.ko
00000b88 T CMPI_CreateProc
hi3518_chnl.ko
hi3518_dsu.ko
hi3518_group.ko
hi3518_h264e.ko
hi3518_isp.ko
hi3518_ive.ko
hi3518_jpege.ko
hi3518_rc.ko
hi3518_region.ko
hi3518_sio.ko
hi3518_sys.ko
hi3518_tde.ko
hi3518_vda.ko
hi3518_venc.ko
hi3518_viu.ko
hi3518_vou.ko
hi3518_vpss.ko
hidmac.ko
hifb.ko
hi_rtc.ko
hiuser.ko
mmz.ko
wdt.ko
⑶命令
arm-hisiv100nptl-linux-nm `ls *.ko` -A | grep "T CMPI_CreateProc"
⑷執行結果
hi3518_base.ko:00000b88 T CMPI_CreateProc
6.看看 hi3518_base.ko 文件
00000174 r C.375.24392
00000b88 T CMPI_CreateProc
00000740 T CMPI_DevExit
00000750 T CMPI_DevInit
000003cc T CMPI_ExitModules
000004c8 T CMPI_InitModules
000052cc T CMPI_LogExit
00005d90 T CMPI_LogInit
00005efc T CMPI_MmzFree
00005f14 T CMPI_MmzMalloc
00000a84 T CMPI_ProcExit
00000aa4 T CMPI_ProcInit
00000c4c t CMPI_ProcOpen
00000a58 t CMPI_ProcWrite
00000094 T CMPI_QueryModules
00000828 T CMPI_RegisterDevice
00000228 T CMPI_RegisterMod
00000af0 T CMPI_RemoveProc
00000000 T CMPI_StopModules
000007c8 T CMPI_UnRegisterDevice
000001a8 T CMPI_UnRegisterMod
000008d4 T CMPI_UserCopy
00000000 t COMM_ModExit
00000034 t COMM_ModInit
00000720 T COMM_exit_proc_ctrl
00000000 T COMM_init_proc_ctrl
00000c88 t Close
00005314 t Close
000040b8 t DoIoctl
00005374 t DoIoctl
00005274 T HI_ChkLogLevel
00005d3c T HI_LOG
00002140 t Ioctl
00005358 t Ioctl
00005964 t LogProcRead
00005690 t LogProcWrite
00005b3c T LogWrite
00000c74 t Open
000052a8 t Open
000054c0 t Read
0000310c T VB_AddBlkToPool
00002858 T VB_CreatePool
00004ea4 T VB_CreatePoolExt
00001fa4 T VB_DestroyPool
00001f60 T VB_Exit
00003de8 T VB_GetBlkByPoolId
00004010 T VB_GetBlkBySize
000022bc T VB_GetPoolId
00001bd8 T VB_GetPoolInfo
00001858 T VB_Handle2BlkId
00001660 T VB_Handle2Kern
0000175c T VB_Handle2Phys
00001944 T VB_Handle2PoolId
0000207c T VB_Init
00001220 T VB_InquireBlkCnt
000013ec T VB_InquireOneUserCnt
00000c9c T VB_InquirePool
00000f8c T VB_InquirePoolBusyBlkCnt
0000108c T VB_InquirePoolUserCnt
0000151c T VB_InquireUserCnt
00000d8c T VB_IsBlkValid
00001a34 T VB_Phy2Handle
00003adc T VB_PutBlk
000037e0 T VB_UserAdd
00003350 T VB_UserSub
0000234c t VbCreatePool
00001cc8 t VbDestroyPool
00001e50 t VbDoVbExit
000028fc t VbProcShow
0000215c t VbSearchCommPoolBySize
U __aeabi_uidiv
U __arm_ioremap
U __copy_from_user
U __copy_to_user
00000014 r __func__.16496
00000000 r __func__.16526
00000164 r __func__.23025
0000011c r __func__.23038
00000138 r __func__.23080
000001f4 r __func__.23100
00000148 r __func__.23166
00000208 r __func__.23217
0000010c r __func__.23233
000001e8 r __func__.23258
000000fc r __func__.23347
000000e8 r __func__.23377
000000d8 r __func__.23402
000000c8 r __func__.23429
000000b8 r __func__.23461
000001dc r __func__.23498
000001d0 r __func__.23581
00000218 r __func__.23709
000001c0 r __func__.23770
000000a4 r __func__.23839
0000008c r __func__.23876
00000078 r __func__.23913
00000060 r __func__.23978
00000044 r __func__.24008
00000034 r __func__.24043
0000012c r __func__.24154
0000022c r __func__.27868
00000238 r __func__.28155
U __init_waitqueue_head
U __iounmap
00001d3c b __key.28158
U __kmalloc
000000e1 r __kstrtab_CMPI_CreateProc
0000008f r __kstrtab_CMPI_DevExit
0000009c r __kstrtab_CMPI_DevInit
0000004a r __kstrtab_CMPI_ExitModules
0000005b r __kstrtab_CMPI_InitModules
00000271 r __kstrtab_CMPI_LogExit
0000027e r __kstrtab_CMPI_LogInit
000002a1 r __kstrtab_CMPI_MmzFree
000002ae r __kstrtab_CMPI_MmzMalloc
0000006c r __kstrtab_CMPI_QueryModules
000000bf r __kstrtab_CMPI_RegisterDevice
00000039 r __kstrtab_CMPI_RegisterMod
000000f1 r __kstrtab_CMPI_RemoveProc
0000007e r __kstrtab_CMPI_StopModules
000000a9 r __kstrtab_CMPI_UnRegisterDevice
00000026 r __kstrtab_CMPI_UnRegisterMod
000000d3 r __kstrtab_CMPI_UserCopy
00000292 r __kstrtab_HI_ChkLogLevel
0000028b r __kstrtab_HI_LOG
00000195 r __kstrtab_VB_AddBlkToPool
00000263 r __kstrtab_VB_CreatePool
000001a5 r __kstrtab_VB_CreatePoolExt
00000254 r __kstrtab_VB_DestroyPool
00000101 r __kstrtab_VB_Exit
00000242 r __kstrtab_VB_GetBlkByPoolId
00000232 r __kstrtab_VB_GetBlkBySize
00000223 r __kstrtab_VB_GetPoolInfo
000001ea r __kstrtab_VB_Handle2BlkId
000001db r __kstrtab_VB_Handle2Kern
000001cc r __kstrtab_VB_Handle2Phys
000001fa r __kstrtab_VB_Handle2PoolId
00000109 r __kstrtab_VB_Init
0000015d r __kstrtab_VB_InquireBlkCnt
0000016e r __kstrtab_VB_InquireOneUserCnt
00000140 r __kstrtab_VB_InquirePool
00000111 r __kstrtab_VB_InquirePoolBusyBlkCnt
0000012a r __kstrtab_VB_InquirePoolUserCnt
00000183 r __kstrtab_VB_InquireUserCnt
0000014f r __kstrtab_VB_IsBlkValid
0000020b r __kstrtab_VB_Phy2Handle
00000219 r __kstrtab_VB_PutBlk
000001c1 r __kstrtab_VB_UserAdd
000001b6 r __kstrtab_VB_UserSub
00000000 r __kstrtab_g_aModName
0000000b r __kstrtab_g_astModules
00000018 r __kstrtab_g_proc_enable
00000024 r __ksymtab_CMPI_CreateProc
0000002c r __ksymtab_CMPI_DevExit
00000034 r __ksymtab_CMPI_DevInit
0000003c r __ksymtab_CMPI_ExitModules
00000044 r __ksymtab_CMPI_InitModules
0000004c r __ksymtab_CMPI_LogExit
00000054 r __ksymtab_CMPI_LogInit
0000005c r __ksymtab_CMPI_MmzFree
00000064 r __ksymtab_CMPI_MmzMalloc
0000006c r __ksymtab_CMPI_QueryModules
00000074 r __ksymtab_CMPI_RegisterDevice
0000007c r __ksymtab_CMPI_RegisterMod
00000084 r __ksymtab_CMPI_RemoveProc
0000008c r __ksymtab_CMPI_StopModules
00000094 r __ksymtab_CMPI_UnRegisterDevice
0000009c r __ksymtab_CMPI_UnRegisterMod
000000a4 r __ksymtab_CMPI_UserCopy
000000ac r __ksymtab_HI_ChkLogLevel
000000b4 r __ksymtab_HI_LOG
000000bc r __ksymtab_VB_AddBlkToPool
000000c4 r __ksymtab_VB_CreatePool
000000cc r __ksymtab_VB_CreatePoolExt
000000d4 r __ksymtab_VB_DestroyPool
000000dc r __ksymtab_VB_Exit
000000e4 r __ksymtab_VB_GetBlkByPoolId
000000ec r __ksymtab_VB_GetBlkBySize
000000f4 r __ksymtab_VB_GetPoolInfo
000000fc r __ksymtab_VB_Handle2BlkId
00000104 r __ksymtab_VB_Handle2Kern
0000010c r __ksymtab_VB_Handle2Phys
00000114 r __ksymtab_VB_Handle2PoolId
0000011c r __ksymtab_VB_Init
00000124 r __ksymtab_VB_InquireBlkCnt
0000012c r __ksymtab_VB_InquireOneUserCnt
00000134 r __ksymtab_VB_InquirePool
0000013c r __ksymtab_VB_InquirePoolBusyBlkCnt
00000144 r __ksymtab_VB_InquirePoolUserCnt
0000014c r __ksymtab_VB_InquireUserCnt
00000154 r __ksymtab_VB_IsBlkValid
0000015c r __ksymtab_VB_Phy2Handle
00000164 r __ksymtab_VB_PutBlk
0000016c r __ksymtab_VB_UserAdd
00000174 r __ksymtab_VB_UserSub
0000017c r __ksymtab_g_aModName
00000184 r __ksymtab_g_astModules
0000018c r __ksymtab_g_proc_enable
U __memzero
00000031 r __mod_author448
0000001d r __mod_license449
00000042 r __mod_logbuflen443
00000084 r __mod_logbuflentype442
0000009c r __mod_srcversion23
000000c9 r __mod_vermagic5
00000000 r __mod_version450
000000c0 r __module_depends
00000000 r __param_logbuflen
00000028 r __param_str_logbuflen
00000000 D __this_module
U __wake_up
U _cond_resched
U autoremove_wake_function
00000000 T cleanup_module
0000004c d comm_dir_table
00000094 d comm_eproc_table
00000a90 b comm_eproc_tbl_head
00000000 d comm_parent_tbl
U create_proc_entry
U down
U finish_wait
00000b9c b g_DevNode
00000708 B g_aModName
00000000 B g_astModules
00000a9c b g_bCreateNode
00000a98 b g_bDevInit
00000048 D g_proc_enable
00001cf0 B g_stVbSpinLock
U hil_mmb_alloc
U hil_mmb_free
U hil_mmb_getby_phys
00000034 T init_module
U kfree
U kmalloc_caches
U kmem_cache_alloc
00000a94 b logbuflen
U memcpy
U memset
U misc_deregister
U misc_register
U module_put
000000dc d mpp_proc_ops
U panic
U param_ops_int
U prepare_to_wait
U printk
U proc_dointvec
U proc_mkdir
U register_sysctl_table
U remove_proc_entry
00001ca8 b s_apstBlks
00001b20 b s_apstPools
000001ac d s_as32LogLevel
00001cec b s_bIsConf
00000a8c b s_bIsInited
00000264 d s_bWaitData
000014a0 b s_proc_items
0000149c b s_pumap_proc
00001cb8 b s_stCommPools
00001cc0 b s_stDevice
00000144 d s_stFileOp
00001cf4 b s_stLogBuf
00001d10 b s_stLogDevice
00000268 d s_stLogFileOp
00001cac b s_stSema
00001b24 b s_stVbConf
00001cf0 b s_u32State
U schedule
U schedule_timeout
U seq_lseek
U seq_printf
U seq_read
U simple_strtol
U single_open
U single_release
U snprintf
U strcmp
U strncpy
U unregister_sysctl_table
U up
U vsnprintf
7.也可以分開看
⑴命令 arm-hisiv100nptl-linux-nm hi3518_base.ko -u
U __aeabi_uidiv
U __arm_ioremap
U __copy_from_user
U __copy_to_user
U __init_waitqueue_head
U __iounmap
U __kmalloc
U __memzero
U __wake_up
U _cond_resched
U autoremove_wake_function
U create_proc_entry
U down
U finish_wait
U hil_mmb_alloc
U hil_mmb_free
U hil_mmb_getby_phys
U kfree
U kmalloc_caches
U kmem_cache_alloc
U memcpy
U memset
U misc_deregister
U misc_register
U module_put
U panic
U param_ops_int
U prepare_to_wait
U printk
U proc_dointvec
U proc_mkdir
U register_sysctl_table
U remove_proc_entry
U schedule
U schedule_timeout
U seq_lseek
U seq_printf
U seq_read
U simple_strtol
U single_open
U single_release
U snprintf
U strcmp
U strncpy
U unregister_sysctl_table
U up
U vsnprintf