免费注册 查看新帖 |

Chinaunix

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

[内核模块] 如何获取linux/driver下每个子目录注册的initcall函数的起始地址 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-03-26 11:22 |只看该作者 |倒序浏览
实现multi-probe的时候,欲将driver下每个目录下的init函数分别放在一个group上,遇到一个棘手的问题:
目前的机制只是获取initcall0~7的start,但怎么去获取initcall6也就是driver目录下各个子目录对应的initcall start
我能想到一个比较笨拙的办法就是:
在编译时,通过脚本在driver子目录下临时生成一个.c文件,该文件仅有一个module_init注册,
并放在该子目录Makefile obj-y的最前面编译,也就是插入一个标记去标注该子目录的start
编译结束再删除上述临时文件
但这样做不是很严谨,对脚本也不是很熟,实现起来还有一定困难
不清楚是否有好的办法能满足该需求
不吝赐教,多谢!

论坛徽章:
9
辰龙
日期:2014-08-18 20:38:42未羊
日期:2014-09-04 08:50:45丑牛
日期:2014-09-06 00:12:55寅虎
日期:2014-12-22 20:50:56摩羯座
日期:2015-01-14 22:28:15巳蛇
日期:2015-01-23 20:39:272015年辞旧岁徽章
日期:2015-03-03 16:54:1515-16赛季CBA联赛之青岛
日期:2016-03-13 23:37:1915-16赛季CBA联赛之深圳
日期:2016-03-29 18:52:38
2 [报告]
发表于 2014-03-26 19:27 |只看该作者
回复 1# star990

不明白你的意思。如果你要访问你个目录的initcall6的内容,那不同目录你打算如何区分?
你可以举个例子,详细说明一下吗?
还有就是你的multi-probe的作用和方案,最好也一并说明一下。

   

论坛徽章:
0
3 [报告]
发表于 2014-03-26 22:58 |只看该作者
回复 2# Tinnal

Multi-probe大致思想如下:
为缩短kernel中driver probe的时间,每一个cpu core将对应的创建一个thread去load initcall6数组中的成员,也就是运用smp优化目前的单核加载probe
但考虑到很多driver之间有逻辑关系,需要将driver目录下每个文件夹下的所有initcall函数作为一个group,保证它们只会运行在一个core上,以此保证至少driver下每个子目录下的initcall没有**现有的执行顺序
问题就是如何获取每个目录生成的initcall函数的start和end address,以供代码进行判断
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP