免费注册 查看新帖 |

Chinaunix

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

两个驱动之间如何通讯? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-10 09:45 |只看该作者 |倒序浏览
两个驱动程序A, B,B要向A发送数据,那么它们之间应该如何进行通讯呢?

现在想到的办法是在A中通过EXPORT_SYMBOL输出一个函数接口,B就可以通过这个接口向A传送数据。这样就涉及到一个问题,A必须在B之前加载,否则用insmod B就会提示Unknown symbol XXX。有没有办法让它们之间自动实现依赖关系?
或者有其它没有办法进行通讯?

论坛徽章:
0
2 [报告]
发表于 2007-04-10 11:15 |只看该作者
实现自动依赖, 好象只能都copy到/lib/modules/`uname -r`/kernel, 或某个子目录, 然后运行depmod, 再通过modprobe加载。

论坛徽章:
0
3 [报告]
发表于 2007-04-10 16:24 |只看该作者
1. 定义一个公共数据结构, A B 共享,该数据结构通过锁互斥---------实现数据通信.
2. 驱动不一定是module. 当是module时 可在A模块内部运行通过OS命令[具体命令忘了,可见系统初始化代码中]装载B模块----实现互相依赖.

[ 本帖最后由 AIXHP 于 2007-4-10 16:40 编辑 ]

论坛徽章:
0
4 [报告]
发表于 2007-04-10 17:59 |只看该作者

回复 #3 AIXHP 的帖子

你说的是调用request_module?

论坛徽章:
0
5 [报告]
发表于 2007-04-11 13:23 |只看该作者
不是.我已经说的很明白.

论坛徽章:
0
6 [报告]
发表于 2007-04-11 14:18 |只看该作者
原帖由 AIXHP 于 2007-4-11 13:23 发表于 5楼  
不是.我已经说的很明白.


可是我还是没看懂啊, "在A模块内部运行通过OS命令"是指什么?

论坛徽章:
0
7 [报告]
发表于 2007-04-12 09:10 |只看该作者
特定的内核运行函数-----运行OS外的执行代码.但具体的内核运行函数需要你查了-----在系统初始化中用到了.

[ 本帖最后由 AIXHP 于 2007-4-12 09:11 编辑 ]

论坛徽章:
0
8 [报告]
发表于 2007-04-12 10:22 |只看该作者
原帖由 AIXHP 于 2007-4-12 09:10 发表于 7楼  
特定的内核运行函数-----运行OS外的执行代码.但具体的内核运行函数需要你查了-----在系统初始化中用到了.



我觉得您说的应该就是request_module, 它会调用call_usermodehelper, 后者会最终调用用户态的modprobe程序加载需要的模块

[ 本帖最后由 albcamus 于 2007-4-12 10:25 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP