static inline void tasklet_disable_nosync(struct tasklet_struct *t)通過增加tasklet_struct結構體
變量中的count字段的值,使的軟中斷不能被調用執行。和tasklet_disable 相比,不用等待形參的
tasklet_struct 執行完成。
其源碼分析如下:
static inline void tasklet_disable_nosync(struct tasklet_struct *t)
{
#僅僅增大tasklet_struct結構體變量中的count字段的值。
#從這裡可以知道增大count字段的值,可以讓tasklet不被排程執行.
atomic_inc(&t->count);
smp_mb__after_atomic();
}
tasklet_trylock函數用于用于傳回tasklet_struct字段的值,并将這個字段的值設定為TASKLET_STATE_RUN
static inline int tasklet_trylock(struct tasklet_struct *t)
{
return !test_and_set_bit(TASKLET_STATE_RUN, &(t)->state);
}
與之對應的
static inline void tasklet_unlock(struct tasklet_struct *t)
{
smp_mb__before_atomic();
clear_bit(TASKLET_STATE_RUN, &(t)->state);
}
僅僅對應的unlock操作會将tasklet_struct 字段的TASKLET_STATE_RUN 位清零.