c - 什么是 C 中的模块?
问题描述
对于 C++,类似的问题已经出现过一次,但答案和问题本身并不令人满意。
我读过一个.c File
(github链接),其中包括<linux/module.h>
并将其静态函数传递给module_init(foo)
and module_exit(foo)
。那么模块的一般用途是什么,<linux/module.h> file
在这种情况下,特别是这两种方法的用途是什么?
解决方案
它适用于Linux 内核模块。第 1.1 节提到:
所以,你想写一个内核模块。[..] 现在您想了解真正的行动所在,内核模块到底是什么?模块是可以根据需要加载和卸载到内核中的代码片段。它们扩展了内核的功能 [..]。例如,一种模块是设备驱动程序,它允许内核访问连接到系统的硬件。
然后,在第 2.3 节中:
宏
module_init()
和module_exit()
宏初始化和清理你的函数。
例子:
module_init(hello_2_init);
module_exit(hello_2_exit);
这两个 dymmy 函数都调用printk();
说你好/再见世界。
在第 3.1.1 节中:
一个模块总是以你用call
init_module()
指定的函数或函数开始。这是模块的入口函数;它告诉内核模块提供什么功能,并设置内核在需要时运行模块的功能。module_init()
所有模块都以调用其中一个
cleanup_module()
或您在调用中指定的函数结束module_exit()
。这是模块的退出函数;它撤消了任何入口功能。它取消注册入口函数注册的功能。
推荐阅读
- r - 如何按时间戳创建值的有向图
- java - 无法使用 java 流创建数组组合
- reactjs - 在数组映射中反应原生 if else 条件
- javascript - Highcharts:与图表一起自动缩放渲染形状?
- c# - 使用 Confluent.Kafka 消费者库的 Kafka 消息密钥为空
- elasticsearch - 如何创建嵌套的 Kibana 查询?
- linux - 未在引导时为计算模块 3 eMMC 设置 udev 标记 systemd
- function - 按类别在产品价格上加一定金额
- android - DevOpS 无法构建 Xamarin 应用程序
- flutter - 使用颤振应用程序在 Android 上启动 Google 表格应用程序