首页 > 解决方案 > 什么是 C 中的模块?

问题描述

对于 C++,类似的问题已经出现过一次,但答案和问题本身并不令人满意。
我读过一个.c Filegithub链接),其中包括<linux/module.h>并将其静态函数传递给module_init(foo)and module_exit(foo)。那么模块的一般用途是什么,<linux/module.h> file在这种情况下,特别是这两种方法的用途是什么?

标签: clinux-kernel

解决方案


它适用于Linux 内核模块。第 1.1 节提到:

所以,你想写一个内核模块。[..] 现在您想了解真正的行动所在,内核模块到底是什么?模块是可以根据需要加载和卸载到内核中的代码片段。它们扩展了内核的功能 [..]。例如,一种模块是设备驱动程序,它允许内核访问连接到系统的硬件。

然后,在第 2.3 节中:

module_init()module_exit()宏初始化和清理你的函数。

例子:

module_init(hello_2_init);
module_exit(hello_2_exit);

这两个 dymmy 函数都调用printk();说你好/再见世界。

在第 3.1.1 节中:

一个模块总是以你用callinit_module()指定的函数或函数开始。这是模块的入口函数;它告诉内核模块提供什么功能,并设置内核在需要时运行模块的功能。module_init()

所有模块都以调用其中一个cleanup_module()或您在调用中指定的函数结束module_exit()这是模块的退出函数;它撤消了任何入口功能。它取消注册入口函数注册的功能。


推荐阅读