函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:Carry out call_rcu() forward-progress testing.

函数原型:static void rcu_torture_fwd_prog_cr(void)

返回类型:void

参数:

1859  如果READ_ONCE(rcu_fwd_emergency_stop)则返回
1861  如果非call则返回
1865  WRITE_ONCE(Short rcu_torture_delay() delays. , true)
1866  sync()
1867  WRITE_ONCE(rcu_fwd_startat, jiffies)
1868  stopat等于rcu_fwd_startatMaximum CB test duration.
1869  n_launders等于0
1870  n_launders_cb等于0
1871  n_launders_sa等于0
1872  n_max_cbs等于0
1873  n_max_gps等于0
1874 i小于ARRAY_SIZE - get the number of elements in array @arr*@arr: array to be sized(n_launders_hist)循环n_launders等于0
1876  cver等于READ_ONCE(rcu_torture_current_version)
1877  gps等于get_gp_seq()
1878  rcu_launder_gp_seq_start等于gps
1879  tick_dep_set_task(当前进程, TICK_DEP_BIT_RCU)
1880 time_before(jiffies, stopat)且非Stop aggressive CPU-hog tests a bit before the end of the test in order* to avoid interfering with test shutdown.且非READ_ONCE(rcu_fwd_emergency_stop)且非Is it time for the current torture test to stop?循环
1883  rfcp等于READ_ONCE(rcu_fwd_cb_head)
1884  rfcpn = NULL
1885  如果rfcprfcpn等于READ_ONCE(rfc_next)
1887  如果rfcpn
1888  如果rfc_gps大于等于This many CB invocations to count. n_max_gps先自加大于等于Number of counted CBs. 退出
1891  rcu_fwd_cb_head等于rfcpn
1892  n_launders自加
1893  n_launders_sa自加
1894  否则
1895  rfcp等于开辟内存
1896  如果WARN_ON_ONCE(!rfcp)则
1898  继续下一循环
1900  n_max_cbs自加
1901  n_launders_sa等于0
1902  rfc_gps等于0
1904  call( & rh, Callback function for continuous-flood RCU callbacks. )
1905  Give the scheduler a chance, even on nohz_full CPUs.
1906  如果tick_nohz_full_enabled()则
1912  stoppedat等于jiffies
1913  n_launders_cb_snap等于READ_ONCE(n_launders_cb)
1914  cver等于READ_ONCE(rcu_torture_current_version)减cver
1915  gps等于rcutorture_seq_diff(get_gp_seq(), gps)
1916  cb_barrier()
1917  Free all callbacks on the rcu_fwd_cb_head list, either because the* test is over or because we hit an OOM event.
1919  如果非Is it time for the current torture test to stop?且非READ_ONCE(rcu_fwd_emergency_stop)且非Stop aggressive CPU-hog tests a bit before the end of the test in order* to avoid interfering with test shutdown.
1921  WARN_ON(n_max_gps < Number of counted CBs. )
1922  打印警报信息("%s Duration %lu barrier: %lu pending %ld n_launders: %ld n_launders_sa: %ld n_max_gps: %ld n_max_cbs: %ld cver %ld gps %ld\n", __func__, stoppedat - rcu_fwd_startat, jiffies - stoppedat, n_launders + n_max_cbs - n_launders_cb_snap, n_launders, n_launders_sa, n_max_gps, n_max_cbs, cver, gps)
1928  rcu_torture_fwd_cb_hist()
1930  schedule_timeout_uninterruptible(HZ)
1931  tick_dep_clear_task(当前进程, TICK_DEP_BIT_RCU)
1932  WRITE_ONCE(Short rcu_torture_delay() delays. , false)
调用者
名称描述
rcu_torture_fwd_progCarry out grace-period forward-progress testing.