通过模块钩取任意内核函数

时间:2017-03-12 05:08:10

标签: linux-kernel systems-programming

我试图监控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模块时,内核说不知道符号。

关于如何做到这一点的任何想法?

0 个答案:

没有答案