定时器与中断触发次序

之前在做触摸屏实验的时候,出现定时器几乎可以同时出现,请看我在论坛发的问题

当初考虑的是定时器是由中断来实现的,在今天看过内核后发现这个是错误的

看一年内核的有关实现

asmlinkage void __init start_kernel(void)(linux-2.6.22.6\init\Main.c)

       init_IRQ();   //初始化中断

       ...
       init_timers(); //初始化定时器

              open_softirq(TIMER_SOFTIRQ, run_timer_softirq, NULL);//这里看到是一个软中断
       ...
       softirq_init(); //初始化软中断

               open_softirq(TASKLET_SOFTIRQ, tasklet_action, NULL);
               open_softirq(HI_SOFTIRQ, tasklet_hi_action, NULL);

软中断的类型:

enum
{
 HI_SOFTIRQ=0,
 TIMER_SOFTIRQ,
 NET_TX_SOFTIRQ,
 NET_RX_SOFTIRQ,
 BLOCK_SOFTIRQ,
 TASKLET_SOFTIRQ,
 SCHED_SOFTIRQ,
#ifdef CONFIG_HIGH_RES_TIMERS
 HRTIMER_SOFTIRQ,
#endif
};

而且从上面可以看出软中断默认比硬中断慢些,另外定时器比tasklet稍快,因为tasklet可以进行延迟执行,但是它不像work_queue那样可以休眠,即tasklet必须在原子上下文执行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值