ANDROID: vendor_hooks: select workqueue based on task priority
Introduce vendor hooks to determine which workqueue should be assigned to a task based on its priority Bug: 372168987 Bug: 409419444 Change-Id: I81f4d48f5f53021744c87524d412d9593745ffed Signed-off-by: Yang Yang <yang.yang@vivo.com> (cherry picked from commit baf74b82230ddb55ea81f4ad58c3bd2f1b15ba9a) Signed-off-by: ying zuxin <11154159@vivo.com>
This commit is contained in:
committed by
Sandeep Dhavale
parent
addbb4c202
commit
f4de660fb8
@@ -32,6 +32,8 @@
|
||||
|
||||
#include <trace/events/block.h>
|
||||
|
||||
#include <trace/hooks/blk.h>
|
||||
|
||||
#include <linux/t10-pi.h>
|
||||
#include "blk.h"
|
||||
#include "blk-mq.h"
|
||||
@@ -1565,6 +1567,12 @@ static void blk_mq_requeue_work(struct work_struct *work)
|
||||
|
||||
void blk_mq_kick_requeue_list(struct request_queue *q)
|
||||
{
|
||||
bool skip = false;
|
||||
|
||||
trace_android_vh_blk_mq_kick_requeue_list(q, 0, &skip);
|
||||
if (skip)
|
||||
return;
|
||||
|
||||
kblockd_mod_delayed_work_on(WORK_CPU_UNBOUND, &q->requeue_work, 0);
|
||||
}
|
||||
EXPORT_SYMBOL(blk_mq_kick_requeue_list);
|
||||
@@ -1572,6 +1580,13 @@ EXPORT_SYMBOL(blk_mq_kick_requeue_list);
|
||||
void blk_mq_delay_kick_requeue_list(struct request_queue *q,
|
||||
unsigned long msecs)
|
||||
{
|
||||
bool skip = false;
|
||||
|
||||
trace_android_vh_blk_mq_kick_requeue_list(q,
|
||||
msecs_to_jiffies(msecs), &skip);
|
||||
if (skip)
|
||||
return;
|
||||
|
||||
kblockd_mod_delayed_work_on(WORK_CPU_UNBOUND, &q->requeue_work,
|
||||
msecs_to_jiffies(msecs));
|
||||
}
|
||||
@@ -2276,8 +2291,16 @@ select_cpu:
|
||||
*/
|
||||
void blk_mq_delay_run_hw_queue(struct blk_mq_hw_ctx *hctx, unsigned long msecs)
|
||||
{
|
||||
bool skip = false;
|
||||
|
||||
if (unlikely(blk_mq_hctx_stopped(hctx)))
|
||||
return;
|
||||
|
||||
trace_android_vh_blk_mq_delay_run_hw_queue(blk_mq_hctx_next_cpu(hctx),
|
||||
hctx, msecs_to_jiffies(msecs), &skip);
|
||||
if (skip)
|
||||
return;
|
||||
|
||||
kblockd_mod_delayed_work_on(blk_mq_hctx_next_cpu(hctx), &hctx->run_work,
|
||||
msecs_to_jiffies(msecs));
|
||||
}
|
||||
|
||||
@@ -374,6 +374,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sk_alloc);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sk_free);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_receive_sock);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_task_get_classid);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_blk_mq_delay_run_hw_queue);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_blk_mq_kick_requeue_list);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_enable_thermal_genl_check);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_thermal_pm_notify_suspend);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_alloc_pages_entry);
|
||||
|
||||
@@ -17,6 +17,17 @@ DECLARE_HOOK(android_vh_bd_link_disk_holder,
|
||||
TP_PROTO(struct block_device *bdev, struct gendisk *disk),
|
||||
TP_ARGS(bdev, disk));
|
||||
|
||||
struct blk_mq_hw_ctx;
|
||||
struct request_queue;
|
||||
|
||||
DECLARE_HOOK(android_vh_blk_mq_delay_run_hw_queue,
|
||||
TP_PROTO(int cpu, struct blk_mq_hw_ctx *hctx, unsigned long delay, bool *skip),
|
||||
TP_ARGS(cpu, hctx, delay, skip));
|
||||
|
||||
DECLARE_HOOK(android_vh_blk_mq_kick_requeue_list,
|
||||
TP_PROTO(struct request_queue *q, unsigned long delay, bool *skip),
|
||||
TP_ARGS(q, delay, skip));
|
||||
|
||||
#endif /* _TRACE_HOOK_BLK_H */
|
||||
/* This part must be outside protection */
|
||||
#include <trace/define_trace.h>
|
||||
|
||||
Reference in New Issue
Block a user