赞
踩
最生硬的访问控制方式是只允许一个设备一次被一个进程打开(独享),这是一个设备驱动最简单的访问控制。实现十分简单,具体的代码看实验源码吧!
模块程序链接:scullsingle.tar.gz
模块测试程序链接:scullsingle-test.tar.gz
ARM9实验板的实验现象是:
|
open 调用在第一次打开记住了设备拥有者,此用户可多次打开设备,并协调多个进程对设备并发操作。同时,没有其他用户可打开它,避免了外部干扰。这个模块我是利用completion模块改的,这要既可以实现功能,也方便测试。
模块程序链接:completion-singleUID.tar.gz
|
阻塞型单用户访问
模块程序链接:completion-singleUIDnb.tar.gz
模块测试程序链接:completion-singleUIDnb-test.tar.gz
ARM9实验板的实验现象是:
|
在 open 时复制设备
访问控制的另一个技术是根据打开条件创建不同的设备私有副本。这只有当设备没有绑定到一个硬件实体时才有可能。 /dev/tty 的内部使用类似的技术来给它的进程一个不同的 /dev 入口点所呈现的“景象”。这类访问控制较少见,但这个实现可说明内核代码可以轻松改变应用程序的运行环境,类似windows中的虚拟机概念。
模块程序链接:scullcloned.tar.gz
ARM9实验板的实验现象是:
|
《Linux设备驱动程序(第3版)》第六章高级字符驱动程序操作的学习终于结束了,内容比较多,碰到的问题也多。但是在解决问题的过程中可以学到很多的知识,所以有了问题不要马上问别人,试着自己看源码来发现问题,不仅记得牢,也学得多。
模块测试程序链接:completion-singleUID-test.tar.gz
ARM9实验板的实验现象是:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。