|
模块的特性。所以任何新的设备都能通过动态加载模块在系统运行时加载到系统中,并且能够被控制和访问。
设备驱动的概念是非常抽象的并且处于一台计算上所运行软件的最低层。由于直接到设备的硬件特性的限 制。每个设备驱动都只管理一种单一类型的设备。这些类型可能是字符型,快设备型或网络型。如果一个应用程序向设备提出(操作)要求。内核会联系到对应的设备驱动,设备驱动接着向特定的设备发出命令。设备驱 动是一个函数集合:包含了许多调用入口,类似于open,close,read,write,ioctl,llseek 等。当你插入你的模块时,init_module ( ) 函数会被调用,而模块被移出时,cleanup_module ( ) 函数会被调用。设备是在 设备驱动的init_module ( ) 例程中被登记的。
当设备在 init_module ( ) 中登记时,设备的资源如I/O端口,内存和中断号也在这个函数被分配,这也 是驱动程序能够正确操作设备的需要。如果你分配了任何错误的内存地址,系统会显示错误信息segmentation fault. 而对于I/O端口,系统不会给出任何类似wrong I/O port的信息,但是 页码:[1] [2] [3] [4] [5] [6] [7] [8] 第4页、共8页 |