函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

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

函数名称:bfq_bfqq_handle_idle_busy_switch

函数原型:static void bfq_bfqq_handle_idle_busy_switch(struct bfq_data *bfqd, struct bfq_queue *bfqq, int old_wr_coeff, struct request *rq, bool *interactive)

返回类型:void

参数:

类型参数名称
struct bfq_data *bfqd
struct bfq_queue *bfqq
intold_wr_coeff
struct request *rq
bool *interactive
1656  idle_for_long_time等于bfq_bfqq_idle_for_long_time(bfqd, bfqq), arrived_in_time等于ktime_get_ns()小于等于completion time of the last request maximum idling time 乘3
1676  in_burst等于bfq_bfqq_in_large_burst(bfqq)
1677  soft_rt等于 Max service-rate for a soft real-time queue, in sectors/sec 大于0且非Sync random I/O is likely to be confused with soft real-time I/O,* because it is characterized by limited throughput and apparently* isochronous arrival pattern(bfqq)且非in_burstime_is_before_jiffies(a) return true if a is before jiffies (Minimum time instant such that, only if a new request is* enqueued after this time instant in an idle @bfq_queue with* no outstanding requests, then the task associated with the* queue it is deemed as soft real-time (see the comments on* the function )且umber of requests on the dispatch list or inside driver 恒等于0
1682  interactive等于非in_burstidle_for_long_time
1683  wr_or_deserves_wr等于 if set to true, low-latency heuristics are enabled actor by which the weight of this queue is multiplied 大于1或bfq_bfqq_sync(bfqq)且Pointer to the bfq_io_cq owning the bfq_queue, set to %NULL* if the queue is shared.interactivesoft_rt的值的值
1692  bfqq_wants_to_preempt等于The next function, invoked after the input queue bfqq switches from* idle to busy, updates the budget of bfqq. The function also tells* whether the in-service queue should be expired, by returning* true
1709  如果此条件成立可能性大(为编译器优化)(!bfq_bfqq_just_created(bfqq))且idle_for_long_timeime_is_before_jiffies(a) return true if a is before jiffies (udget expiration (in jiffies) + msecs_to_jiffies: - convert milliseconds to jiffies*@m: time in milliseconds* conversion is done as follows:* - negative values mean 'infinite timeout' (MAX_JIFFY_OFFSET)* - 'too large' values [that would result in larger than)则
1714  hlist_del_init( & de for the device's burst list )
1715  bfq_clear_bfqq_in_large_burst(bfqq)
1718  bfq_clear_bfqq_just_created(bfqq)
1721  如果非bfq_bfqq_IO_bound(bfqq)则
1722  如果arrived_in_time
1727  否则Number of consecutive pairs of request completion and* arrival, such that the queue becomes idle after the* completion, but the next request arrives within an idle* time slice; used only if the queue's IO_bound flag has been* cleared.等于0
1731  如果 if set to true, low-latency heuristics are enabled
1732  如果此条件成立可能性小(为编译器优化)(ime_is_after_jiffies(a) return true if a is after jiffies (ime of last split ))则ime of last split 等于jiffies* Minimum idle period after which weight-raising may be * reactivated for a queue (in jiffies).减1
1751  Time of the last transition of the @bfq_queue from idle to* backlogged.等于jiffies
1752  Cumulative service received from the @bfq_queue since the* last transition from idle to backlogged.等于0
1753  bfq_clear_bfqq_softrt_update(bfqq)
1755  Called when an inactive queue receives a new request.
1789  如果 bfq_queue in service bfqq_wants_to_preemptactor by which the weight of this queue is multiplied 大于等于actor by which the weight of this queue is multiplied Return true if bfqq is in a higher priority class, or has a higher* weight than the in-service queue.的值且next_queue_may_preempt(bfqd)则q_bfqq_expire - expire a queue.*@bfqd: device owning the queue.*@bfqq: the queue to expire.*@compensate: if true, compensate for the time spent idling.*@reason: the reason causing the expiration.* If the process associated with bfqq does slow I/O (e
调用者
名称描述
bfq_add_request