Linux设备驱动程序的函数跳转表
扫描二维码
随时随地手机看文章
直接面向设各硬件的程序叫做设各驱动程序。设各驱动程序的作用就是在设各硬件寄存器的基础上来实现系统上层的各项操作命令。这些函数虽然是直接面向设备的硬件编程,有一部分代码是用汇编语言来编写的,但通常都会提供一个高级语言的接口,因此,它们的外观看起来与一般的c函数没有区别,例如read()、write()、open()、close()等。 在linux中,常用一个结构作为调用上述设各驱动程序中各个函数的跳转表,即把指向上述设备驱动程序函数的指针集中在一个结构中。这个结构就是我们已经熟悉的file_opera_tions。为了清楚起见。把在文件系统中介绍的结构file opcrattons的部分内容列举如下: 其实,计算机的信息最终还是要落实到某个实际物理设备或装置上的。当然,文件作为一个具有逻辑关系的数据集合是存储到磁盘这个物理设各中的。如果把磁盘中的数据块看成是一个没备·那么上面这个结构中的各函数指针落实到具体文件i节点中的文件操作函数集,实质上就是磁盘这个设备的驱动程序,所以前面也曾经把i节点叫做设备文件。 原则上,作为不是以存储数据为目的的诸如鼠标、键盘、显示器、打印机等其他设备,file_operations结构中函数指针的名称可以由程序设计人员任意命名.例如,write()实质上就是处理器向设备输出数据,把它改为output()也未尝不可。但由于将来要用文件系统来管理设备,也就是要把设各也要看做一种文件.所以这里还是应该遵循文件系统的命名方法。