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 位清零.