函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\sched\fair.c Create Date:2022-07-27 10:39:21
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:Preempt the current task with a newly woken task if needed:

函数原型:static void check_preempt_wakeup(struct rq *rq, struct task_struct *p, int wake_flags)

返回类型:void

参数:

类型参数名称
struct rq *rq
struct task_struct *p
intwake_flags
6565  curr等于当前任务
6566  se等于调度实体, pse等于调度实体
6567  cfs_rq等于task_cfs_rq(curr)
6568  scale等于nr_running大于等于This value is kept at sysctl_sched_latency/sysctl_sched_min_granularity
6569  next_buddy_marked等于0
6571  如果此条件成立可能性小(为编译器优化)(se == pse)则返回
6580  如果此条件成立可能性小(为编译器优化)(throttled_hierarchy(cfs_rq_of(pse)))则返回
6583  如果sched_feat(NEXT_BUDDY)且scale且非wake_flags按位与Child wakeup after fork 的值则
6584  set_next_buddy(pse)
6585  next_buddy_marked等于1
6598  如果检查进程是否已经设置了调度标志则返回
6602  如果此条件成立可能性小(为编译器优化)(task_has_idle_policy(curr))且此条件成立可能性大(为编译器优化)(!task_has_idle_policy(p))则转到:preempt
6610  如果此条件成立可能性小(为编译器优化)(任务调度策略 != Scheduling policies)或非sched_feat(WAKEUP_PREEMPTION)则返回
6613  find_matching_se( & se, & pse)
6614  更新当前进程运行时间,包括虚拟运行时间
6615  BUG_ON(!pse)
6616  如果wakeup_preempt_entity(se, pse)恒等于1则
6621  如果非next_buddy_markedset_next_buddy(pse)
6623  转到:preempt
6626  返回
6628  preempt :
6629  标记当前进程需要被调度出去
6639  如果此条件成立可能性小(为编译器优化)(!on_rq || curr == 空闲任务)则返回
6642  如果sched_feat(LAST_BUDDY)且scaleentity_is_task(se)则set_last_buddy(se)