本文共 739 字,大约阅读时间需要 2 分钟。
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_RUNstatic 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 位清零.
转载地址:http://agjmi.baihongyu.com/