我知道Kprobes可用于探测任何内核函数。但在浏览完文档后,我发现它主要是一种被动的实体。它只是将探针放在执行序列的中间。
但是如果我想直接调用任何内核函数而不打扰执行序列会怎么样呢。
我怎样才能做到这一点?
更新:
注意:我想调用内核模块中的任何内核函数,而不是来自任何用户空间应用程序。
答案 0 :(得分:2)
无法从居住在用户空间的应用程序中简单地调用内核函数。系统调用是用户空间中唯一可以请求内核服务的函数。
要直接调用内核函数,如果您对内核编程感兴趣,则必须实现内核模块。 This是一个起点。
修改强>
由于您已指定要从模块内调用内核函数,因此根本没有问题。只需按照我上面发布的文档链接即可。
答案 1 :(得分:1)
如果我想直接调用任何内核函数
并非所有功能都至少可以直接使用。
在您的案例中调用内核函数时,请考虑以下几点。
示例
功能定义(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