Chinaunix首页 | 论坛 | 博客
  • 博客访问: 686300
  • 博文数量: 152
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1793
  • 用 户 组: 普通用户
  • 注册时间: 2013-09-12 12:26
个人简介

相信自己,只有不想做的,没有做不到的。

文章分类

全部博文(152)

文章存档

2021年(1)

2015年(2)

2014年(74)

2013年(75)

分类: 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);
}

阅读(419) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~