免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1512 | 回复: 8
打印 上一主题 下一主题

kernel module编程的两个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-04-18 16:48 |只看该作者 |倒序浏览
1.我写一个hello-3.c 的代码,然后编译成hello-3.ko,然后 insmod hello-3.ko, 通过打印信息可以看出insmod成功。
但我cat /proc/modules看到的却是 hello_3
我不明白,在这里为什么中划线变成了下划线?

2.我写一个带参数的kernel module,在module代码里有这样几句话:
static char my_char_array[3] = {'a', 'b', 'c'};
module_param(my_char_array, byte, 0, 0);

编译以后,下这样的insmod命令:
insmod xxx.ko my_char_array='x','y','z','u'
却报错参数错误。
请问我该怎样传递char array的参数呢?

谢谢!

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
2 [报告]
发表于 2009-04-19 08:04 |只看该作者
1.我写一个hello-3.c 的代码,然后编译成hello-3.ko,然后 insmod hello-3.ko, 通过打印信息可以看出insmod成功。
但我cat /proc/modules看到的却是 hello_3
我不明白,在这里为什么中划线变成了下划线?

对,这个内核会将内核模块名称中'-'换行为'_',应该是内核不希望看到'-'. 可以通过研究内核代码看一下是什么时候转换的。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
3 [报告]
发表于 2009-04-19 08:14 |只看该作者
static char my_char_array[3] = {'a', 'b', 'c'};
module_param(my_char_array, byte, 0, 0);

编译以后,下这样的insmod命令:
insmod xxx.ko my_char_array='x','y','z','u'


内核定义的数组是3个char,但你传了4个char

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
4 [报告]
发表于 2009-04-19 08:32 |只看该作者
要么你声明为char *p型的,直接传个字符串。
如果atic char my_char_array[3]是这样的,
传参的时候,应该这样insmod hellop.ko my_char_array=98,99,100
这样相当于传进了三个字符b,c,d。

虽然你声明的字符型,但实际上字符型也只是范围比较小的整型。还是应该按照数字传进去。

论坛徽章:
0
5 [报告]
发表于 2009-04-19 09:37 |只看该作者
版主 Godbach  (To be 千里马!)
版主-法师

向你学习

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
6 [报告]
发表于 2009-04-19 10:01 |只看该作者
原帖由 unixlinuxsys 于 2009-4-19 09:37 发表
版主 Godbach  (To be 千里马!)
版主-法师

向你学习

呵呵,共同学习。对于传参数的那个,我也是通过实践的出来结果。

论坛徽章:
0
7 [报告]
发表于 2009-04-19 21:01 |只看该作者

回复 #6 Godbach 的帖子

嗯,其实,我最近也在研究动态加载模块,但是很奇怪的是:我在2.6.9下能够insmod成功,但是在2.6.26下却有格式错误,不能加载,很奇怪

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
8 [报告]
发表于 2009-04-19 21:10 |只看该作者
原帖由 happyliking 于 2009-4-19 21:01 发表
嗯,其实,我最近也在研究动态加载模块,但是很奇怪的是:我在2.6.9下能够insmod成功,但是在2.6.26下却有格式错误,不能加载,很奇怪


这个应该不奇怪啊。2.6的内核,不同的子版本之间都有可能变化比较大。
你的哪种方法,我在2.6.18下也是报错的。

论坛徽章:
0
9 [报告]
发表于 2009-04-19 22:42 |只看该作者
谢谢BZ
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP