相信自己,只有不想做的,没有做不到的。
分类: LINUX
2013-12-12 12:58:57
一,下半部机制task
//不能有睡眠,可以响应中断,不接受调度,不能太长
1,定义
struct tasklet_struct tlet;
2,中断内初始化
tasklet_schedule(&dev->tlet);
3中断与执行函数想关联
/* register the tasklet */
tasklet_init(&globalfifo_devp->tlet, jit_tasklet_fn, (unsigned long)globalfifo_devp);
4,执行下半部函数
void jit_tasklet_fn(unsigned long arg)
{
printk("in jit_tasklet_fn jiffies=%ld\n",jiffies);
}
二,下半部机制work_queue
//能有睡眠,可以响应中断,接受调度,可以太长
1,定义
struct work_struct my_wq;
2,初始化
//tasklet_schedule(&dev->tlet);
schedule_work(&dev->my_wq);
3中断与执行函数想关联
/* register the tasklet */
//tasklet_init(&globalfifo_devp->tlet, jit_tasklet_fn, (unsigned long)globalfifo_devp);
INIT_WORK(&(globalfifo_devp->my_wq),(void *)my_do_work);//for 2.6.20
return 0;
4,执行下半部函数
void my_do_work(unsigned long arg)
{
printk("in my_do_work jiffies=%ld\n",jiffies);
}