我知道 Kprobes 可以用来探测任何内核函数。但是看了它的文档后,我意识到它主要是一种被动实体。它只是将一个探针放在执行序列的中间。
但是,如果我想直接调用任何内核函数而不用担心执行顺序怎么办。
我怎样才能做到这一点?
更新:
注意:我想在我的内核模块中调用任何内核函数,而不是从任何用户空间应用程序中调用。
我知道 Kprobes 可以用来探测任何内核函数。但是看了它的文档后,我意识到它主要是一种被动实体。它只是将一个探针放在执行序列的中间。
但是,如果我想直接调用任何内核函数而不用担心执行顺序怎么办。
我怎样才能做到这一点?
更新:
注意:我想在我的内核模块中调用任何内核函数,而不是从任何用户空间应用程序中调用。
不能简单地从用户空间中的应用程序调用内核函数。系统调用是用户空间中唯一可以请求内核服务的函数。
要直接调用内核函数,如果你对内核编程感兴趣,你必须实现一个内核模块。这是一个起点。
编辑
正如您已指定要从模块内调用内核函数,那么根本没有问题。只需按照我在上面发布的链接获取文档即可。
如果我想直接调用任何内核函数怎么办
至少不是所有的功能都可以直接使用。
在您的案例中调用内核函数时请考虑以下几点。
例子
函数定义(i2c_smbus_read_byte_data)
http://lxr.free-electrons.com/source/drivers/i2c/i2c-core.c#L2689
在这里使用
http://lxr.free-electrons.com/source/drivers/i2c/i2c-core.c#L350