如何在C / C ++程序中加载内核模块

时间:2016-02-14 16:51:18

标签: python c++ c raspberry-pi kernel-module

我正在使用ds18b20温度传感器,我正在努力将一些python代码转换为c ++,以帮助更好地学习语言。我遇到了需要加载w1-gpio和w1-therm模块的问题。我在堆栈溢出中发现了很多东西,提到应该使用init_module,并且在同一个线程中,其他人提到在fork()旁边使用exec()。经过大量的谷歌搜索和阅读手册页,我找不到任何如何完成这些任务的例子。有人可以指出我和/或举例说明如何使用这些方法加载这两个模块吗?或者提供一个不涉及系统的替代方案(“modprobe w1-gpio”)?

uname -a

产生

Linux raspberrypi 4.1.13-v7+ #826 SMP PREEMPT Fri Nov 13 20:19:03 GMT 2015 armv7l GNU/Linux

1 个答案:

答案 0 :(得分:3)

我仍然认为system("modprobe ...")对于这种情况是一个非常好的解决方案。它只会给你自己带来额外的问题。

如果您确切知道要加载哪些内核模块,请使用init_module或它的兄弟finit_module。但是您需要以正确的顺序加载模块。当然,需要知道保存文件的所有相关位置,他们需要的参数等等。

在你自己清理之后,别忘了改变delete_module的订单。

modprobe和朋友的来源可以在这里找到: https://github.com/vadmium/module-init-tools

insmod很短,但modproble是2300多行代码。