如Perf报告分析所示,我的用户应用程序在从PCI设备读取数据时与内核交互,特别是通过名为pci_user_write_config_dword的函数.
我感兴趣的是探索这个函数,以理解它为什么调用_RAW_SPIN_LOCK_IRQ.
我一直无法找到该函数的实际实现. 我只在内核源代码中的以下位置找到了它的定义:https://elixir.bootlin.com/linux/v5.18.19/source/include/linux/pci.h#L1235
在Linux内核源代码中的哪里可以找到pci_user_write_config_dword的实现?
user_ application [kernel.kallsyms] [k] do_syscall_64
|
|--90.82%--do_syscall_64
| |
| |--61.22%--__x64_sys_pwrite64
| | |
| | --61.21%--ksys_pwrite64
| | |
| | --61.05%--vfs_write
| | |
| | --60.87%--__vfs_write
| | |
| | --60.79%--kernfs_fop_write
| | |
| | --60.19%--sysfs_kf_bin_write
| | |
| | --60.18%--pci_write_config
| | |
| | |--57.62%--pci_user_write_config_dword
| | | |
| | | |--35.92%--_raw_spin_lock_irq
| | | | |
| | | | --35.88%--native_queued_spin_lock_slowpath