我试图监控PCIe堆栈将配置写入设备的所有时间。在没有PCI等效的usbmon的情况下,我想要监视pci_bus_write_config_byte()
函数被调用的所有时间。我想写一个基本上做到这一点的内核模块:
int (*original)(struct pci_bus *, unsigned int, int, u8);
original = &pci_bus_write_config_byte;
pci_bus_write_config_byte = &my_custom_func;
然后我的自定义函数将printk()
传递任何数据,并返回原始pci_bus_write_config_byte。但是,当我加载模块时没有任何反应。我怀疑这是由于某种RW保护。
我的谷歌搜索显示set_memory_rw()
应该使函数指针可写,但我无法正确包含它或使用此函数 - 当我去insmod模块时,内核说不知道符号。
关于如何做到这一点的任何想法?