cond_resched探讨和分析

下面有cond_resched注释和源代码
1.顾名思义
有条件的调度,条件是什么呢?

2.注释解释
/*              
 * cond_resched() and cond_resched_lock(): latency reduction via
 * explicit rescheduling in places that are safe. The return
 * value indicates whether a reschedule was done in fact.
*/
通过在适当安全地方明显重新调度来减少延迟,返回值表明调度是否完成。
注意理解
a).适当安全地方,这就是上面所说条件, 适当安全地方又是什么地方呢?分析下面代码可得知。
b).直接进行调度,肯定提高实时性,因为正常调度时机:时间片到时,中断返回等,这时候就行调度肯定延迟不小。

3.代码分析
a).should_resched是应该可以调度,就是我们所说条件(适当安全地方)。条件有两点:
1.需要调度地方,也就是设置TIF_NEED_RESCHED标志地方。最终设置TIF_NEED_RESCHED这个标志函数有scheduler_tick和try_to_wake_up,当然封装这两个函数,也可以啦。
2.内核可抢占的地方
上述两点可以调用成功。该函数不能在中断上下中调度,只能在进程上下文使用该函数。

b).返回值为1,表示调度完成。0,表示失败。

static inline int should_resched(void)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值