函数逻辑报告 |
Source Code:kernel\rcu\rcuperf.c |
Create Date:2022-07-27 11:24:07 |
| Last Modify:2020-03-12 14:18:49 | Copyright©Brick |
| 首页 | 函数Tree |
| 注解内核,赢得工具 | 下载SCCT | English |
函数名称:RCU perf writer kthread. Repeatedly does a grace period.
函数原型:static int rcu_perf_writer(void *arg)
返回类型:int
参数:
| 类型 | 参数 | 名称 |
|---|---|---|
| void * | arg |
| 350 | i等于0 |
| 353 | struct callback_head * rhp = NULL |
| 358 | wdpp等于writer_durations[me] |
| 360 | VERBOSE_PERFOUT_STRING("rcu_perf_writer task started") |
| 362 | set_cpus_allowed_ptr(当前进程, cpumask_of - the cpumask containing just a given cpu*@cpu: the cpu (<= nr_cpu_ids)(me % nr_cpu_ids)) |
| 363 | sched_priority等于1 |
| 364 | 改变调度策略和线程优先级 |
| 366 | 如果holdoff则schedule_timeout_uninterruptible(holdoff * HZ) |
| 374 | 当非gp_exp且Values used for system_state. Ordering of the states must not be changed* as code checks for <, <=, >, >= STATE.不等于SYSTEM_RUNNING循环 |
| 377 | t等于ktime_get_mono_fast_ns() |
| 378 | 如果atomic_inc_return( & n_rcu_perf_writer_started)大于等于nrealwriters则 |
| 388 | 循环 |
| 392 | wdp等于ktime_get_mono_fast_ns() |
| 393 | 如果gp_async则 |
| 394 | retry : |
| 397 | 如果rhp且atomic_read(this_cpu_ptr( & n_async_inflight))小于gp_async_max则 |
| 398 | atomic_inc(this_cpu_ptr( & n_async_inflight)) |
| 400 | rhp = NULL |
| 402 | gp_barrier() |
| 403 | 转到:retry |
| 404 | 否则 |
| 407 | 否则如果gp_exp则 |
| 408 | exp_sync() |
| 409 | 否则 |
| 410 | sync() |
| 412 | t等于ktime_get_mono_fast_ns() |
| 415 | 如果非started且atomic_read( & n_rcu_perf_writer_started)大于等于nrealwriters则started = true |
| 419 | done = true |
| 420 | sched_priority等于0 |
| 421 | 改变调度策略和线程优先级 |
| 425 | 如果atomic_inc_return( & n_rcu_perf_writer_finished)大于等于nrealwriters则 |
| 427 | schedule_timeout_interruptible(10) |
| 429 | PERFOUT_STRING("Test complete") |
| 431 | 如果gp_exp则 |
| 432 | b_rcu_perf_writer_finished等于exp_completed()除2 |
| 434 | 否则 |
| 438 | 如果shutdown则 |
| 439 | smp_mb() |
| 440 | wake_up( & shutdown_wq) |
| 444 | 如果done且非alldone且atomic_read( & n_rcu_perf_writer_finished)大于等于nrealwriters则alldone = true |
| 451 | 如果gp_async则 |
| 452 | gp_barrier() |
| 454 | writer_n_durations[me]等于i_max |
| 456 | 返回:0 |
| 源代码转换工具 开放的插件接口 | X |
|---|---|
| 支持:c/c++/esqlc/java Oracle/Informix/Mysql 插件可实现:逻辑报告 代码生成和批量转换代码 |