TQ2440按键点亮LED驱动程序(三)

2014-11-23 19:49:11 · 作者: · 浏览: 95
的close方法,close方法的主要职责:释放系统的中断,如果申请的中断没有释放会占用系统的中断资源,导致某些程序无法运行,比如我一开始由于中断的释放这里没有处理好,导致的问题是当我将驱动模块加载进系统内核,然后运行我的驱动测试程序,这些都没有问题,但是当我关掉测试程序再次运行时,本人发现测试程序打不开设备了,不能运行了,提示错误设备正忙,原因就是系统的中断资源没有及时释放。


4.定义设备的read方法,read方法的主要职责是:当我上层应用程序需要读我的设备的时候,当我设备没有数据可读的时候,这个时候该如何处理的问题。


5.定义设备的poll方法,poll设备方法负责完成:


①使用poll_wait将等待队列添加到poll_table中。


②返回描述设备是否可读或可写的掩码。


位掩码:


POLLIN 设备可读


POLLRDNORM 数据可读


POLLOUT 设备可写


POLLWRNORM 数据可写


设备可读通常返回 (POLLIN|POLLRDNORM)


设备可写通常返回 (POLLOUT|POLLWRNORM)


6.定义ioctl方法,这个设备方法不做解释,不懂的话请看我前面写的那篇TQ2440LED驱动程序的文章。


7.定义file_operations 。file_operations结构中的每一个成员的名字都对应着一个上层应用程序的调用。


8.定义模块加载函数:这里需要特别说明的是,我们要在驱动模块加载函数里面要加入熄灭4盏LED灯的代码,以便等下测试的时候能够很好的看到按键点亮LED灯的效果。


9.定义模块卸载函数:略。