2.设置中断处理函数,当发生中断时就调用这个中断处理函数来处理中断,这之后是定义设备的open方法,对于本文的程序open方法主要的职责是:设置cpu的中断控制引脚工作在中断模式下并且申请中断;设置LED的cpu控制引脚工作在输出模式下。
3.定义设备的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结构中的每一个成员的名字都对应着一个上层应用程序的调用。