Linux中断延迟之tasklet(3)

static inline void tasklet_hi_schedule(struct tasklet_struct *t)   {       /*标志位的检查*/       if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state))           __tasklet_hi_schedule(t);   }  

 

void __tasklet_hi_schedule(struct tasklet_struct *t)   {       unsigned long flags;          local_irq_save(flags);       t->next = NULL;       *__get_cpu_var(tasklet_hi_vec).tail = t;       __get_cpu_var(tasklet_hi_vec).tail = &(t->next);       /*激活对应softirq_vec[]数组中HI_SOFTIRQ下标      的软中断,就是tasklet_hi_vec链表*/       raise_softirq_irqoff(HI_SOFTIRQ);       local_irq_restore(flags);   }  

实现了上面的几个操作流程,当软中断函数一旦被唤醒就由do_softirq函数来执行。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/22951.html