tasklet作为软中断的一种,软中断实现为任何时刻在一个CPU上只有一个实例在运行,这句话我的理解是:
因为调度软中断的时候,每次都会判断in_interrupt,如果在软中断中则直接返回,这样就会可以实现任何时刻在一个CPU上只有一个实例在运行。
但是tasklet作为软中断的一种,如何实现任何时刻(多个CPU下)只有一个实例在运行?
看代码中是直接判断tasklet描述符的 state成员 是不是置位TASKLET_STATE_RUN,实现控制。但是我的疑惑是tasklet_vec链表不是一个per cpu变量嘛,那么这个判断会因为不同CPU有一个不同变量而导致结果不同啊。
请指教!