首页 理论教育 嵌入式Linux编程入门与实例-块设备驱动简介

嵌入式Linux编程入门与实例-块设备驱动简介

时间:2023-10-31 理论教育 版权反馈
【摘要】:块设备可以随机访问。由于块设备有可移动的单元,如果所有的请求是朝同一方向的,则性能最佳。块设备驱动程序的特点如下:●块设备接口相对复杂,不如字符设备明晰易用。表8-1 块设备与字符设备的区别块设备接口比较复杂,其驱动程序对整个系统的性能影响较大。设计块设备驱动程序要兼顾速度和效率两个方面。块设备驱动如同字符设备驱动,必须使用一套注册接口来使内核可使用它们的设备。

嵌入式Linux编程入门与实例-块设备驱动简介

块设备接口主要是针对硬盘、软盘和CD-ROM等慢速设备设计的,以免耗费过多的CPU等待时间。它仅仅支持面向块的I/O操作。所有I/O操作都通过在内核地址空间中的I/O缓冲区进行,执行I/O操作的速度较慢,它可以支持几乎任意长度和任意位置上的I/O请求,通常是可移动的单元。块设备可以随机访问。当多个请求同时提交给设备时,块设备访问的性能很大程度上取决于请求的顺序。由于块设备有可移动的单元,如果所有的请求是朝同一方向的,则性能最佳。

块设备驱动程序的特点如下:

●块设备接口相对复杂,不如字符设备明晰易用。

●块设备驱动程序对整个系统的性能影响较大,速度和效率是需要考虑的重要方面。

●在系统中经常使用缓冲区与访问请求的优化管理来提高系统的性能。

表8-1列出了块设备与字符设备的区别。

表8-1 块设备与字符设备的区别

978-7-111-33316-6-Chapter08-15.jpg

块设备接口比较复杂,其驱动程序对整个系统的性能影响较大。设计块设备驱动程序要兼顾速度和效率两个方面。块设备驱动如同字符设备驱动,必须使用一套注册接口来使内核可使用它们的设备。(www.xing528.com)

注册的函数是register_blkdev(),在/include/linux/fs.h中定义:

978-7-111-33316-6-Chapter08-16.jpg

参数是设备要使用的主编号和关联的名字。如果major传递为0,内核分配一个新的主编号并且返回它给调用者;如果register_blkdev返回一个负值,表示发生了一个错误

注销的函数是unregister_blkdev(),其函数原型为:

978-7-111-33316-6-Chapter08-17.jpg

这里,参数必须匹配传递给register_blkdev,否则这个函数就返回-EINVAL并且不进行注销。

块设备和字符设备类似,都是通过文件系统进行访问的。二者的区别在于内核内部管理数据的方式不同。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈