vxWorks下设备管理部分代码导读 VxWork下设备驱动程序存在于硬件设备和上层应用程序之间。设备驱动程序直接管理硬 件设备,并对上层应用程序提供屏蔽了地层硬件特性的接口调用。 驱动程序只提供几个低级的I/O函数完成简单的数据输入和输出功能,而其它具体的高级 协议,如面向字符设备的协议和面向块设备的协议,则是由与设备无关的I/O系统完成。 I/O系统为用户的I/O请求寻找具体的驱动程序。 I/O系统管理着驱动程序,把应用程序的I/O请求转发给合适的驱动程序进行处理。 I/O系统为驱动程序维护着三张表, (1)文件描述符列表FD TABLE,维护着已打开设备的句柄,驱动该设备的驱动程序号,设备相关参数的指针这三 者的对应关系。 (2)设备描述链表DEVICE LIST,维护着系统中存在的设备号,驱动该设备的驱动程序号,设备相关的参数的指针 三者的对应关系。 (3)驱动程序列表DRIVER TABLE,维护着驱动设备的驱动程序号,和该设备对应的七个基本I/O操作的函数(如xx Open..等)的入口地址这两者的对应关系。 I/O系统对这三个表的操作大致过程为: 当调用creat(..)或oPen(...)时,首先在设备描述链表中根据设备名找到相应的项(若 为 create,则创建响应的表项),根据驱动程序号找到底层实现代码xxCreate(..)或xxOp en(...),I/O系统将驱动程序号及xxCreate(...)或xxOpen(...)返回的指向设备相关参 数的指针添入文件描述符列表中,最后,返回在文件描述符列表中添加的项在该表中对 应的序号,即文件句柄,提供给后续的I/O操作使用。 当调用read(...)或write(...)时,根据文件句柄,在文件描述符列表中找到对应的表项 ,得到操作该设备的驱动程序号,I/O系统再根据驱动程序列表得到响应的底层驱动实现 函数xxRead(...)或xxWri……