参考:
《Linux内核设计与实现》
http://blog.csdn.net/fontlose/article/details/8279113
http://blog.chinaunix.net/uid-27212029-id-3386692.html
tasklet是中断处理下半部分最常用的一种方法,驱动程序一般先申请中断,在中断处理函数内完成中断上半部分的工作后调用tas...
分类:
系统相关 时间:
2014-10-21 21:38:24
阅读次数:
352
将key.c中的timer机制、key_wq.c中的workqueue机制改成tasklet机制,完成中断的下半部
需要特别注意:tasklet中不可休眠,其上下文是中断,而workqueue是可以休眠的,wq的上下文是内核线程
所以这里并没有去除抖动,如果需要延时去抖动,timer或者workqueue更合适
如果需要休眠,就不能选择tasklet
#include "key.h...
分类:
其他好文 时间:
2014-10-15 23:59:21
阅读次数:
497
中断处理程序
----中断处理程序ISR是在中断发生时被调用时用来处理中断的函数,在中断运行期间,不能
----执行有可能引起睡眠测操作,不能同用户空间交换数据,不能调用schedule函数,实现
----中断处理有一个原则,就是尽可能快处理并返回地,但是多数中断产生时要进行大量的
----耗时处理,为了使中断处理尽可能短并完成后续大量工作,linux引入了一种底半部机制,
----分为顶半部(top half)和底半部(buttomhalf)。
底半部机制
----Tasklet
----工作队列...
分类:
系统相关 时间:
2014-09-04 20:56:00
阅读次数:
371
并发控制的概念
----并发指的是多个执行单元并行执行,而并发的执行单元对共享资源(硬件资源和
----软件上的全局变量、静态变量等)的访问则很容易导致竞态。
竞态发生的情况
----对称多处理器(SMP)的多个CPU
----单CPU内进程与抢占它的进程
----中断(硬中断、软中断、Tasklet、底半部)与进程之间...
分类:
系统相关 时间:
2014-09-02 21:27:05
阅读次数:
305
在分析linux内核的中断,软中断时,先应该明确这样一个派生关系:irq ==> softirq ==> tasklet ==> bottom half ==> task queue------------------------|==> timer中断是最初的原动力。分时系统依赖于时钟中断来定时重...
分类:
系统相关 时间:
2014-08-19 14:19:14
阅读次数:
300
获得自旋锁和释放自旋锁有好几个版本,因此让读者知道在什么样的情况下使用什么版本的获得和释放锁的宏是非常必要的。 如果被保护的共享资源只在进程上下文访问和软中断(包括tasklet、timer)上下文访问,...
分类:
其他好文 时间:
2014-08-18 09:22:44
阅读次数:
280
tasklet是在HI_SOFTIRQ和TASKLET_SOFTIRQ两个软中断的基础上实现的(它们是在同一个源文件中实现,由此可见它们的关系密切程度),它的数据结构和软中断比较相似,这篇博文将分析tasklet的初始化过程。1.和tasklet相关的数据结构tasklet_vec和tasklet_...
分类:
其他好文 时间:
2014-07-30 12:07:33
阅读次数:
225
tasklet是中断处理下半部分最常用的一种方法,驱动程序一般先申请中断,在中断处理函数内完成中断上半部分的工作后调用tasklet。tasklet有如下特点:1.tasklet只可以在一个CPU上同步地执行,不同的tasklet可以在不同地CPU上同步地执行。2.tasklet的实现是建立在两个软...
分类:
系统相关 时间:
2014-07-28 15:29:33
阅读次数:
335
最近在万兆网卡上测试,出现了之前千兆网卡没有出现的一个现象,tasklet版本的netback下,vm进行发包测试,发现vif的interrupt默认绑定在cpu0上,但是vm发包运行时发现host上面cpu1, cpu2的ksoftirqd很高。
从之前的理解上来说,包从netfront出来通过eventchannel notify触发vif的irq处理函数,然后tasklet_sch...
分类:
Web程序 时间:
2014-07-04 07:49:20
阅读次数:
294