中断API之tasklet_disable_nosync/tasklet_trylock/tasklet_unlock

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值