函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:do_sched_rt_period_timer

函数原型:static int do_sched_rt_period_timer(struct rt_bandwidth *rt_b, int overrun)

返回类型:int

参数:

类型参数名称
struct rt_bandwidth *rt_b
intoverrun
814  idle等于1, throttled等于0
817  span等于sched_rt_period_mask()
832  enqueue等于0
833  rt_rq等于sched_rt_period_rt_rq(rt_b, i)
834  rq等于rq_of_rt_rq(rt_rq)
841  raw_spin_lock( & Nests inside the rq lock: )
842  如果非sched_feat(RT_RUNTIME_SHARE)且rt_runtime不等于Single value that denotes runtime == period, ie unlimited time.rt_runtime等于rt_runtime
844  skip等于非rt_time且非rt_nr_running
845  raw_spin_unlock( & Nests inside the rq lock: )
846  如果skip则继续下一循环
849  raw_spin_lock( & 运行队列锁)
850  更新rq运行时间
852  如果rt_time
855  raw_spin_lock( & Nests inside the rq lock: )
856  如果rt_throttledbalance_runtime(rt_rq)
858  runtime等于rt_runtime
859  rt_time减等于两数取小(rt_time, overrun * runtime)
860  如果rt_throttledrt_time小于runtime
861  rt_throttled等于0
862  enqueue等于1
874  如果rt_timert_nr_runningidle等于0
876  raw_spin_unlock( & Nests inside the rq lock: )
877  否则如果rt_nr_running
878  idle等于0
879  如果非rt_rq_throttled(rt_rq)则enqueue等于1
882  如果rt_throttledthrottled等于1
885  如果enqueuesched_rt_rq_enqueue(rt_rq)
887  raw_spin_unlock( & 运行队列锁)
890  如果非throttled且非rt_bandwidth_enabled()或rt_runtime恒等于Single value that denotes runtime == period, ie unlimited time.的值则返回:1
893  返回:idle
调用者
名称描述
sched_rt_period_timer