内核模块在运行时由应用程序加载的要求是什么

时间:2013-04-03 05:44:00

标签: linux-kernel kernel kernel-module

有时我观察到,当运行应用程序或调用任何内核模块函数时,会自动加载相应的内核模块。

我想构建一个类似的内核模块,当我的应用程序执行并调用它的ioctl时,它将自动加载。

实际上我想知道,我需要在内核模块中编写什么内容,以便我的应用程序在运行时自动加载它。

我经常寻找它,但没有找到任何令人满意的东西。

1 个答案:

答案 0 :(得分:3)

要搜索的关键字是kmod,它是Linux内核的一部分,用于处理动态加载内核模块的请求。

这里的答案中列出了太多细节,但请查看Linux Device Drivers, 2nd Edition' book, chapter 11,其中详细介绍了内核模块自动加载。

请注意,模块加载请求必须来自内核。因此,如果您在自定义模块中有设备驱动程序但未加载,则内核无法知道如何将ioctl请求与驱动程序匹配。但是假设你有一个驱动程序和一些ioctl函数分成不同的模块A和B,可以插入主模块A来提供设备接口,然后当ioctl被请求驱动程序A时,它可以自动加载附加模块B包含使用kmod机制的ioctl函数