免费注册 查看新帖 |

Chinaunix

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

Driver处理多个用户访问的问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-11-23 19:10 |只看该作者 |倒序浏览
请教下,
在driver里,大家是怎么处理多个用户访问的情况的?
就是说由多个用户态程序同时调用driver,读里面的数据,怎么区分多个用户?
例如,本来应该给用户A的数据不要发给了B.
我觉得大多数driver里都没有考虑这个问题。
谢谢。

论坛徽章:
0
2 [报告]
发表于 2006-11-23 23:06 |只看该作者
一般都考虑了啦。比如说最简单的情况,每个用户进程要访问设备,肯定得open那个设备啦,这个时候驱动不就能区分了吗,在open的时候给不同的进程分配不同的资源(比如说状态信息、buffer之类的)就可以了。

论坛徽章:
0
3 [报告]
发表于 2006-11-24 00:42 |只看该作者
那就是说文件描述符指向的private_data是用户相关,而不是设备相关了?
这样的话,在一个用户使用多个设备,而且一个设备被多个用户使用的情况下不是很难处理?

论坛徽章:
0
4 [报告]
发表于 2006-11-24 10:59 |只看该作者
private_data应该是设备相关的。
总之呢,在设备驱动里面是完全可以支持多用户访问的情况的,当然这样的话,可能会复杂些。
如果只想在某一时刻只有一个用户能访问设备,可以在open借口里面来实现,或者让open设备的进程睡眠,或者返回“设备忙”的错误信息。

论坛徽章:
0
5 [报告]
发表于 2006-11-24 23:42 |只看该作者
这是比较简单的情况,
如果driver里完全不存在用户信息的话,如何能真正做到支持多用户
用户去取数据的时候,总得通过某种方式读属于自己的数据,而不是有什么就去拿什么吧。
我想借鉴一下别人的做法。

论坛徽章:
0
6 [报告]
发表于 2006-11-25 14:24 |只看该作者
原帖由 real_me 于 2006-11-24 23:42 发表
这是比较简单的情况,
如果driver里完全不存在用户信息的话,如何能真正做到支持多用户
用户去取数据的时候,总得通过某种方式读属于自己的数据,而不是有什么就去拿什么吧。
我想借鉴一下别人的做法。


觉得driver里应该不会回不存在任何的进程信息吧?

你可以看看很多官方的driver,借鉴一下阿

论坛徽章:
0
7 [报告]
发表于 2006-11-25 15:27 |只看该作者
是的,我大概看了下自带的那些driver源码,确实没有什么用户信息
但是我觉得单单从用户空间来区分多用户,比较困难。
毕竟内核只有一个地址空间,大家都要调进来。
不是很有经验,多谢你的建议。

论坛徽章:
0
8 [报告]
发表于 2006-11-27 14:25 |只看该作者
Driver也分几种嘛,有的是设备驱动,有的是协议驱动,你说的那种情况属于协议驱动,看看控制台驱动程序栈或许有帮助

论坛徽章:
0
9 [报告]
发表于 2006-11-27 19:17 |只看该作者
多谢,你说的控制台驱动程序栈是不是就是tty driver,这个算是协议驱动么?
稍微看了一下,也没有发现很明显的用户data。

论坛徽章:
0
10 [报告]
发表于 2006-11-28 08:55 |只看该作者
原帖由 real_me 于 2006-11-24 00:42 发表
那就是说文件描述符指向的private_data是用户相关,而不是设备相关了?
这样的话,在一个用户使用多个设备,而且一个设备被多个用户使用的情况下不是很难处理?


用户使用几个设备是用户自己的事情。
驱动只需要处理 多用户使用的情况即可。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP