最新Linux设备驱动程式学习(6)-高级字符驱动程式操作[(3)设备文件的访问控制.doc

上传人:1595****071 文档编号:35204353 上传时间:2022-08-20 格式:DOC 页数:31 大小:958.50KB
返回 下载 相关 举报
最新Linux设备驱动程式学习(6)-高级字符驱动程式操作[(3)设备文件的访问控制.doc_第1页
第1页 / 共31页
最新Linux设备驱动程式学习(6)-高级字符驱动程式操作[(3)设备文件的访问控制.doc_第2页
第2页 / 共31页
点击查看更多>>
资源描述

《最新Linux设备驱动程式学习(6)-高级字符驱动程式操作[(3)设备文件的访问控制.doc》由会员分享,可在线阅读,更多相关《最新Linux设备驱动程式学习(6)-高级字符驱动程式操作[(3)设备文件的访问控制.doc(31页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateLinux设备驱动程式学习(6)-高级字符驱动程式操作(3)设备文件的访问控制Linux设备驱动程式学习(6)-高级字符驱动程式操作(3)设备文件的访问控制Linux设备驱动程式学习(6)-高级字符驱动程式操作(3)设备文件的访问控制Linux设备驱动程式学习(6)-高级字符驱动程式操作(3)设备文件的访问控制提供访问控制对于一个设备节点来的可靠性来说有时是至关重要的

2、。这部分的内容只是在open和release方法上做些修改,增加一些检查机制既可。 独享设备最生硬的访问控制方式是只允许一个设备一次被一个进程打开(独享),这是个设备驱动最简单的访问控制。实现十分简单,具体的代码看实验源码吧!模块程式链接:scullsingle.tar.gz模块测试程式链接:scullsingle-test.tar.gzARM9实验板的实验现象是:Tekkaman2440SBC2440V4#cd /lib/modules/Tekkaman2440SBC2440V4#insmod scullsingle.koTekkaman2440SBC2440V4#cat /proc/dev

3、icesCharacter devices:1 mem2 pty3 ttyp4 /dev/vc/04 tty4 ttyS5 /dev/tty5 /dev/console5 /dev/ptmx7 vcs10 misc13 input14 sound81 video4linux89 i2c90 mtd116 alsa128 ptm136 pts180 usb189 usb_device204 s3c2410_serial252 scullsingle253 usb_endpoint254 rtcBlock devices:1 ramdisk256 rfd7 loop31 mtdblock93 nf

4、tl96 inftl179 mmcTekkaman2440SBC2440V4#mknod -m 666 scullsingle c 252 0Tekkaman2440SBC2440V4#cd /tmp/Tekkaman2440SBC2440V4#./scullsingle-test &Tekkaman2440SBC2440V4#open scullsingle is file=3Tekkaman2440SBC2440V4#echo 12345 /dev/scullsingle-sh: cannot create /dev/scullsingle: Device or resource busy

5、Tekkaman2440SBC2440V4#cat /dev/scullsinglecat: cant open /dev/scullsingle单用户访问 open 调用在第一次打开记住了设备拥有者,此用户可多次打开设备,并协调多个进程对设备并发操作。同时,没有其他用户可打开他,避免了外部干扰。这个模块我是利用completion模块改的,这要既能实现功能,也方便测试。模块程式链接:completion-singleUID.tar.gz模块测试程式链接:completion-singleUID-test.tar.gzARM9实验板的实验现象是:Tekkaman2440SBC2440V4#in

6、smod /lib/modules/singleUID.koTekkaman2440SBC2440V4#cat /proc/devicesCharacter devices:1 mem2 pty3 ttyp4 /dev/vc/04 tty4 ttyS5 /dev/tty5 /dev/console5 /dev/ptmx7 vcs10 misc13 input14 sound81 video4linux89 i2c90 mtd116 alsa128 ptm136 pts180 usb189 usb_device204 s3c2410_serial252 singleUID253 usb_endp

7、oint254 rtcBlock devices:1 ramdisk256 rfd7 loop31 mtdblock93 nftl96 inftl179 mmcTekkaman2440SBC2440V4#mknod -m 666 /dev/singleUID c 252 0Tekkaman2440SBC2440V4#/tmp/singleUID_testr&Tekkaman2440SBC2440V4#login tekkamanPassword:Set search library path int /etc/profileSet user path in /etc/profileruning

8、 /etc/profile okTekkaman2440SBC2440V4#/tmp/singleUID_testwopen singleUID code=-1Tekkaman2440SBC2440V4#/tmp/singleUID_testropen singleUID code=-1Tekkaman2440SBC2440V4#exitTekkaman2440SBC2440V4#/tmp/singleUID_testwwrite code=0Tekkaman2440SBC2440V4#read code=01 + Done /tmp/singleUID_testr阻塞型单用户访问模块程式链接

9、:completion-singleUIDnb.tar.gz模块测试程式链接:completion-singleUIDnb-test.tar.gzARM9实验板的实验现象是:Tekkaman2440SBC2440V4#insmod /lib/modules/singleUIDnb.koTekkaman2440SBC2440V4#cat /proc/devicesCharacter devices:1 mem2 pty3 ttyp4 /dev/vc/04 tty4 ttyS5 /dev/tty5 /dev/console5 /dev/ptmx7 vcs10 misc13 input14 soun

10、d81 video4linux89 i2c90 mtd116 alsa128 ptm136 pts180 usb189 usb_device204 s3c2410_serial252 singleUIDnb253 usb_endpoint254 rtcBlock devices:1 ramdisk256 rfd7 loop31 mtdblock93 nftl96 inftl179 mmcTekkaman2440SBC2440V4#mknod -m 666 /dev/singleUIDnb c 252 0Tekkaman2440SBC2440V4#/tmp/singleUID_testrnb&T

11、ekkaman2440SBC2440V4#login tekkamanPassword:Set search library path int /etc/profileSet user path in /etc/profileruning /etc/profile okTekkaman2440SBC2440V4#/tmp/singleUID_testrnb &Tekkaman2440SBC2440V4#/tmp/singleUID_testwnb &Tekkaman2440SBC2440V4#exitTekkaman2440SBC2440V4#psPID Uid VSZ Stat Comman

12、d 1 root 1744 S init 2 root SW kthreadd 3 root SWN ksoftirqd/0 4 root SW watchdog/0 5 root SW events/0 6 root SW khelper 59 root SW kblockd/0 60 root SW ksuspend_usbd 63 root SW khubd 65 root SW kseriod 77 root SW pdflush 78 root SW pdflush 79 root SW kswapd0 80 root SW aio/0707 root SW mtdblockd708

13、 root SW nftld709 root SW inftld710 root SW rfdd742 root SW kpsmoused751 root SW kmmcd769 root SW rpciod/0778 root 1752 S -sh779 root 1744 S init781 root 1744 S init782 root 1744 S init783 root 1744 S init814 root 1336 D /tmp/singleUID_testrnb816 tekkaman 1336 S /tmp/singleUID_testrnb817 tekkaman 13

14、36 S /tmp/singleUID_testwnb818 root 1744 R psTekkaman2440SBC2440V4#/tmp/singleUID_testwnb&Tekkaman2440SBC2440V4#read code=0write code=0write code=0read code=02 + Done /tmp/singleUID_testwnb1 + Done /tmp/singleUID_testrnbTekkaman2440SBC2440V4#psPID Uid VSZ Stat Command 1 root 1744 S init 2 root SW kt

15、hreadd 3 root SWN ksoftirqd/0 4 root SW watchdog/0 5 root SW events/0 6 root SW khelper 59 root SW kblockd/0 60 root SW ksuspend_usbd 63 root SW khubd 65 root SW kseriod 77 root SW pdflush 78 root SW pdflush 79 root SW kswapd0 80 root SW aio/0707 root SW mtdblockd708 root SW nftld709 root SW inftld7

16、10 root SW rfdd742 root SW kpsmoused751 root SW kmmcd769 root SW rpciod/0778 root 1752 S -sh779 root 1744 S init781 root 1744 S init782 root 1744 S init783 root 1744 S init820 root 1744 R ps在 open 时复制设备访问控制的另一个技术是根据打开条件创建不同的设备私有副本。这只有当设备没有绑定到一个硬件实体时才有可能。 /dev/tty 的内部使用类似的技术来给他的进程一个不同的 /dev 入口点所呈现的“景

17、象”。这类访问控制较少见,但这个实现可说明内核代码能轻松改动应用程式的运行环境,类似windows中的虚拟机概念。我将书中的例子作了修改,实现了不同的用户使用scull的不同私有副本,这样方便了在ARM9实验板上做测试。这个实验源码需要一定的linux 链表的知识(在第十一章),下一篇会介绍。模块程式链接:scullcloned.tar.gzARM9实验板的实验现象是:Tekkaman2440SBC2440V4#cd /lib/modules/Tekkaman2440SBC2440V4#insmod scullcloned.koTekkaman2440SBC2440V4#cat /proc/d

18、evicesCharacter devices:1 mem2 pty3 ttyp4 /dev/vc/04 tty4 ttyS5 /dev/tty5 /dev/console5 /dev/ptmx7 vcs10 misc13 input14 sound81 video4linux89 i2c90 mtd116 alsa128 ptm136 pts180 usb189 usb_device204 s3c2410_serial252 scullcloned253 usb_endpoint254 rtcBlock devices:1 ramdisk256 rfd7 loop31 mtdblock93

19、nftl96 inftl179 mmcTekkaman2440SBC2440V4#mknod -m 666 scullcloned c 252 0Tekkaman2440SBC2440V4#echo root /dev/scullclonedTekkaman2440SBC2440V4#cat /dev/scullclonedrootTekkaman2440SBC2440V4#login tekkamanPassword:Set search library path int /etc/profileSet user path in /etc/profileruning /etc/profile

20、 okTekkaman2440SBC2440V4#cat /dev/scullclonedTekkaman2440SBC2440V4#echo tekkaman /dev/scullclonedTekkaman2440SBC2440V4#cat /dev/scullclonedtekkamanTekkaman2440SBC2440V4#exitTekkaman2440SBC2440V4#cat /dev/scullclonedrootLinux设备驱动程式(第3版)第六章高级字符驱动程式操作的学习终于结束了,内容比较多,碰到的问题也多。不过在解决问题的过程中能学到非常多的知识,所以有了问题不要马上问别人,试着自己看源码来发现问题,不仅记得牢,也学得多。-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 成人自考

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com