码迷,mamicode.com
首页 > 系统相关 > 详细

linux中断底半部机制

时间:2014-09-04 20:56:00      阅读:371      评论:0      收藏:0      [点我收藏+]

标签:style   color   使用   ar   strong   数据   sp   on   amp   

中断处理程序

----中断处理程序ISR是在中断发生时被调用时用来处理中断的函数,在中断运行期间,不能

----执行有可能引起睡眠测操作,不能同用户空间交换数据,不能调用schedule函数,实现

----中断处理有一个原则,就是尽可能快处理并返回地,但是多数中断产生时要进行大量的

----耗时处理,为了使中断处理尽可能短并完成后续大量工作,linux引入了一种底半部机制,

----分为顶半部(top half)和底半部(buttomhalf)。

底半部机制

----Tasklet

----工作队列

Tasklet和下半部处理

----tasklet将任务延迟到安全时间执行,每个tasklet都和一个函数相关联,当tasklet运行时,

----该函数就被调用,并且tasklet可以调度自己。

Tasklet的实现

----定义一个处理函数:

----void tasklet_func(unsigned  long);

----定义一个tasklet结构my_tasklet与tasklet_func(data)函数关联

----struct tasklet_struct  my_tasklet;

----DECLARE_TASKLET(my_tasklet,tasklet_func,data);

----调度tasklet

----tasklet_schedule(&my_tasklet);

工作队列和下半部处理

----工作队列使用方法和tasklet非常相似

----定义一个工作队列:

----struct work_struct  my_wq;

----定义一个处理函数

----void my_wq_func(struct work_struct  *work);

----初始化工作队列并将其处理函数绑定

----INIT_WORK(&my_wq,my_wq_func);

----调度工作队列执行

----schedule_work(&my_wq);

Tasklet和工作队列的区别

----tasklet工作在中断上下文

----工作队列工作在进程上下文

----tasklet处理函数中不能睡眠

----工作队列中允许有睡眠

linux中断底半部机制

标签:style   color   使用   ar   strong   数据   sp   on   amp   

原文地址:http://blog.csdn.net/hbuxiaofei/article/details/39058585

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!