电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

高级字符驱动操作说明VIP免费

高级字符驱动操作说明_第1页
1/50
高级字符驱动操作说明_第2页
2/50
高级字符驱动操作说明_第3页
3/50
第1页共50页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共50页更多企业学院:《中小企业管理全能版》183套讲座+89700份资料《总经理、高层管理》49套讲座+16388份资料《中层管理学院》46套讲座+6020份资料《国学智慧、易经》46套讲座《人力资源学院》56套讲座+27123份资料《各阶段员工培训学院》77套讲座+324份资料《员工管理企业学院》67套讲座+8720份资料《工厂生产管理学院》52套讲座+13920份资料《财务管理学院》53套讲座+17945份资料《销售经理学院》56套讲座+14350份资料《销售人员培训学院》72套讲座+4879份资料(2008-09-2816:28)第2页共50页第1页共50页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共50页分类:第6章高级字符驱动操作在第3章,我们建立了一个完整的设备驱动,用户可用来写入和读取.但是一个真正的设备常常提供比同步读和写更多的功能.现在我们已装备有调试工具如果发生错误,并且一个牢固的并发的理解来帮助避免事情进入错误--我们可安全地前进并且创建一个更高级的驱动.本章检查几个你需要理解的概念来编写全特性的字符设备驱动.我们从实现ioctl系统调用开始,它是用作设备控制的普通接口.接着我们进入各种和用户空间同步的方法;在本章结尾,你有一个充分的认识对于如何使进程睡眠(并且唤醒它们),实现非阻塞的I/O,并且通知用户空间当你的设备可用来读或写.我们以查看如何在驱动中实现几个不同的设备存取策略来结束.这里讨论的概念通过scull驱动的几个修改版本来演示.再一次,所有的都使用内存中的虚拟设备来实现,因此你可自己试验这些代码而不必使用任何特别的硬件.到此为止,你可能在想亲手使用真正的硬件,但是那将必须等到第9章.6.1.ioctl接口大部分驱动需要--除了读写设备的能力--通过设备驱动进行各种硬件控制的能力.大部分设备可进行超出简单的数据传输之外的操作;用户空间必须常常能够请求,例如,设备锁上它的门,弹出它的介质,报告错误信息,改变波特率,或者自我销毁.这些操作常常通过ioctl方法来支持,它通过相同名子的系统调用来实现.在用户空间,ioctl系统调用有下面的原型:intioctl(intfd,unsignedlongcmd,...);这个原型由于这些点而凸现于Unix系统调用列表,这些点常常表示函数有数目不定的参数.在实际系统中,但是,一个系统调用不能真正有变数目的参数.系统调用必须有一个很好定义的原型,因为用户程序可存取它们只能通过硬件的"门".因此,原型中的点不表示一个变数目的参数,而是一个单个可选的参数,传统上标识为char*argp.这些点在那里只是为了阻止在编译时的类型检查.第3个参数的实际特点依赖所发出的特定的控制命令(第2个参数).一些命令不用参数,一些用一个整数值,以及一些使用指向其他数据的指针.使用一个指针是传递任意数据到ioctl调用的方法;设备接着可与用户空间交换任何数量的数据.ioctl调用的非结构化特性使它在内核开发者中失宠.每个ioctl命令,基本上,是一个单独的,常常无文档的系统调用,并且没有方法以任何类型的全面的第3页共50页第2页共50页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第3页共50页方式核查这些调用.也难于使非结构化的ioctl参数在所有系统上一致工作;例如,考虑运行在32-位模式的一个用户进程的64-位系统.结果,有很大的压力来实现混杂的控制操作,只通过任何其他的方法.可能的选择包括嵌入命令到数据流(本章稍后我们将讨论这个方法)或者使用虚拟文件系统,要么是sysfs要么是设备特定的文件系统.(我们将在14章看看sysfs).但是,事实是ioctl常常是最容易的和最直接的选择,对于真正的设备操作.ioctl驱动方法有和用户空间版本不同的原型:int(*ioctl)(structinode*inode,structfile*filp,unsignedintcmd,unsignedlongarg);inode和filp指针是对应应用程序传递的文件描述符fd的值,和传递给open方法的相同参数.cmd参数从用户那里不改变地传下来,并且可选的参数arg参数以一个unsignedlong的形式传递,不管它是否由用户给定为一个整数或一个指针.如果调用程序不传递第3个参数,被驱动操作收到的arg值是无定义的.因为类型检查在这个额外参数上被关闭,编译器不能警告你如果一...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

高级字符驱动操作说明

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部