Linux世界驰骋四——文件系统和设备管理

http://tech.ddvip.com   2007年03月12日    社区交流

本文详细介绍Linux世界驰骋四——文件系统和设备管理

  (2) 必须把模块内涉及对外访问的符号(函数名或变量名)连接到内核,即把这些符号在内核映像中的地址填入该模块需要访问这些符号的指令及数据结构中。

  (3) 在内核创建一个module数据结构,并申请所需的系统空间。

  (4) 最后,把用户空间中完成了连接的模块映像装入内核空间,并在内核中“登记”本模块的有关数据结构(如file_operations结构),其中有指向执行相关操作函数的指针。

  如前所述,Linux系统是一个动态的操作系统。用户根据工作中的需要,会对系统中设备重新配置,如安装新的打印机、卸载老式终端等。这样,每当Linux系统内核初启时,它都要对硬件配置进行检测,很有可能会检测到不同的物理设备,就需要不同的驱动程序。

  在构建系统内核时,可以使用配置脚本将设备驱动程序包含在系统内核中。在系统启动时对这些驱动程序初始化,它们可能未找到所控制的设备,而另外的设备驱动程序可以在需要时作为内核模块装入到系统内核中。

  为了适应设备驱动程序动态连接的特性,设备驱动程序在其初始化时就在系统内核中进行登记。Linux系统利用设备驱动程序的登记表作为内核与驱动程序接口的一部分,这些表中包括指向有关处理程序的指针和其它信息。

  3.字符设备

  在Linux系统中,打印机、终端等字符设备都作为字符特别文件出现在用户面前。用户对字符设备的使用就和存取普通文件一样。在应用程序中,使用标准的系统调用来打开、关闭、读写字符设备。当字符设备初始化时,其设备驱动程序被添加到由device_struct结构组成的chrdevs结构数组中。

  device_struct结构由两项构成,一个是指向已登记的设备驱动程序名的指针,另一个是指向file_operations结构的指针。而file_operations结构的成分几乎全是函数指针,分别指向实现文件操作的入口函数。设备的主设备号用来对chrdevs数组进行索引,如图7所示。

作者:孟庆昌    责编:豆豆技术应用

正在加载评论...