Mic 的技术点滴:关于linux, wince 6.0...还有其他牢骚 mic's another world http://www.ootroo.com/zblog

Task Queue问题--必要的时候需要清空队列

上一篇 / 下一篇  2007-07-20 12:03:00 / 个人分类:linux

}9~T6Z]if L E)h8[0    设计驱动程序的时候,我们往往遇到中断处理的问题. 特别是一些数据传输量比较大的设备, 比如说摄象头驱动,数字电视接受装置....

]}:J3xY#^r:w0

/] \ N+R7P*lH}0    中断应该被快速,高效得处理,这点大家都清楚. 但是如果处理的事情比较多,那么就会影响实时性能. 因为很多时候我们的中断完全占有了cpu,在处理中断的时候,其他中断处理不能介入. 所以linux系统把中断处理分成上半部和下半部分.(top half and bottom half)LUPA开源社区"M [!GY8J#o%V4~

(Za!t!o zQ0    简单的说,上半部接受中断--中断来了,先运行上半部分; 然后在上半部引出下半部--当然下半部也不是必须的.LUPA开源社区@[1d;v1uv'|!R*m!X

+[ w ^5i L6W2G"hpJ F;|0    实现下半部的方法很多,tasklet,task queue,softirq....LUPA开源社区._^A"u)ZhM

;m,P Wa2H6M{/x0    在一个项目中,我使用了task queue作为中断下半部的处理,因为考虑到处理过程可能中断--需要开启dma传输,所以必须先获取dma.LUPA开源社区!Ch&~a'C:|)HT$mD

LUPA开源社区c z3Cz iu(y Y m g

    在最后的测试中遇到一个问题,就是在频繁换台的时候系统出错.

k,hc m0lYkI0 LUPA开源社区wiQ4]M){Nfi

    经过思考和分析,我想到一件事情,就是task queue的处理是在中断历程外的,所以上层播放器换台的时候,没有考虑之前task queue时候已经完成,那么肯定会出现问题--比如task queue 在执行spi的读,应用又尝试用spi写数据....LUPA开源社区6wl9O A2K.mq'gJM

]`@"M9no%T0    所以在每次切换之前添加了清空task queue的处理,经过测试,该问题没有再出现.

4^.a{0?$U ^S0

TAG: linux

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar