linux下程序默认宏,linux-调度程序中的sched_feat宏是什么意思

调度程序代码中使用sched_feat()宏来测试是否启用了某个调度程序功能.例如,在kernel / sched / core.c中,有一段代码

int mutex_spin_on_owner(struct mutex *lock, struct task_struct *owner)

{

if (!sched_feat(OWNER_SPIN))

return 0;

测试是否设置了“如果互斥锁所有者正在运行,则在互斥锁获取上旋转等待”功能.您可以在kernel / sched / features.h中看到调度程序功能的完整列表,但简短的摘要是它们是可在运行时设置的可调参数,而无需通过/ sys / kernel / debug / sched_features重建内核.

例如,如果您尚未更改系统上的默认设置,则将在/ sys / kernel / debug / sched_features中看到“ OWNER_SPIN”,这意味着上面代码段中的!sched_feat(OWNER_SPIN)将评估为false,并且调度程序代码将继续到Mutex_spin_on_owner()中的其余代码中.

您部分复制的宏定义之所以比您预期的要复杂的原因是,它在可用且需要消除频繁运行的调度程序代码路径中的这些条件测试的开销时使用了jump labels功能. (出于明显的原因,仅当在配置中设置了HAVE_JUMP_LABEL时,以及设置了SCHED_DEBUG时,才使用跳转标签版本,因为否则调度程序功能位将在运行时更改).您可以按照上面的链接访问lwn.net,以了解更多信息细节,但是简而言之,跳转标签是一种使用运行时二进制修补程序使标志的条件测试便宜得多的方法,但代价是使标志的更改更加昂贵.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值