函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:block\blk-throttle.c Create Date:2022-07-27 19:18:43
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:throtl_pending_timer_fn

函数原型:static void throtl_pending_timer_fn(struct timer_list *t)

返回类型:void

参数:

类型参数名称
struct timer_list *t
1255  sq等于from_timer(sq, t, pending_timer)
1256  tg等于sq_to_tg - return the throl_grp the specified service queue belongs to*@sq: the throtl_service_queue of interest* Return the throtl_grp @sq belongs to. If @sq is the top-level one* embedded in throtl_data, %NULL is returned.
1257  td等于sq_to_td - return throtl_data the specified service queue belongs to*@sq: the throtl_service_queue of interest* A service_queue can be embedded in either a throtl_grp or throtl_data.* Determine the associated throtl_data accordingly and return it.
1258  q等于queue
1263  spin_lock_irq( & queue_lock)
1264  如果throtl_can_upgrade(td, NULL)则throtl_upgrade_state(td)
1267  again :
1268  parent_sq等于 the parent service_queue
1269  dispatched = false
1271  当(true)循环
1272  hrotl_log - log debug message via blktrace*@sq: the service_queue being reported*@fmt: printf format string*@args: printf args* The messages are prefixed with "throtl BLKG_NAME" if @sq belongs to a* throtl_grp; otherwise, just "throtl".(sq, "dispatch nr_queued=%u read=%u write=%u", number of queued bios [generic data direction definitions ] + number of queued bios [WRITE], number of queued bios [generic data direction definitions ], number of queued bios [WRITE])
1276  ret等于throtl_select_dispatch(sq)
1277  如果ret
1279  dispatched = true
1282  如果hrotl_schedule_next_dispatch - schedule the next dispatch cycle*@sq: the service_queue to schedule dispatch for*@force: force scheduling* Arm @sq->pending_timer so that the next dispatch cycle starts on the* dispatch time of the first pending child退出
1286  spin_unlock_irq( & queue_lock)
1287  cpu_relax()
1288  spin_lock_irq( & queue_lock)
1291  如果非dispatched则转到:out_unlock
1294  如果parent_sq
1296  如果flags按位与 bio_lists[] became non-empty
1305  否则
1307  queue_work - queue work on a workqueue*@wq: workqueue to use*@work: work to queue* Returns %false if @work was already on a queue, %true otherwise.* We queue the work to the CPU on which it was submitted, but if the CPU dies
1309  out_unlock :
1310  spin_unlock_irq( & queue_lock)