摘要:
定时器的使用非常方便,只需要执行一些初始化的操作,设置一个超时时间,指定超时发生时执行的函数,然后激活定时器就可以了。它的处理和工作队列还是有点类似的。其实,在Linux内核开发中,很多的操作都是类似的。还有一点需要注意的,内核定时器并不是周期运行,它在超时后自动销毁。因此,如果要实现周期轮询,就需要在定时器执行函数返回前再次激活定时器。下面看看一个实现轮询操作的小例子: struct timer_list polling_timer; init_timer(&polling_timer);polling_timer.data = (unsigned long)something;po 阅读全文
2011年7月6日 #
摘要:
第一次在X86下写LINUX驱动,具体来说应该是IO驱动。X86的IO是独立编址的。所以用OUTB和INB直接操作IO地址就可以。这点跟ARM等其它CPU不一样。。数据采集采用DMA的传输方式。。2.4下可调的调式代码如下:#ifndef__KERNEL__#define__KERNEL__#endif#ifndefMODULE#defineMODULE#endif#include<linux/init.h>#include<linux/module.h>#include<linux/kernel.h>#include<linux/types.h> 阅读全文