什么是 C 中的模块?

Lav*_*air 4 c linux-kernel

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

gsa*_*ras 5

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

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

然后,在第 2.3 节中:

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

例子:

module_init(hello_2_init);
module_exit(hello_2_exit);
Run Code Online (Sandbox Code Playgroud)

这两个 dymmy 函数都调用了 say printk();hello/goodbye world。

在第 3.1.1 节中:

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

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