1 /* SPDX-License-Identifier: GPL-2.0 */ 2 #undef TRACE_SYSTEM 3 #define TRACE_SYSTEM block 4 5 #define TRACE_INCLUDE_PATH trace/hooks 6 7 #if !defined(_TRACE_HOOK_BLOCK_H) || defined(TRACE_HEADER_MULTI_READ) 8 #define _TRACE_HOOK_BLOCK_H 9 10 #include <linux/tracepoint.h> 11 #include <trace/hooks/vendor_hooks.h> 12 13 #if defined(__GENKSYMS__) || !defined(CONFIG_BLOCK) 14 struct blk_mq_tags; 15 struct blk_mq_alloc_data; 16 struct blk_mq_tag_set; 17 struct blk_mq_hw_ctx; 18 #else 19 /* struct blk_mq_tags */ 20 #include <../block/blk-mq-tag.h> 21 /* struct blk_mq_alloc_data */ 22 #include <../block/blk-mq.h> 23 /* struct blk_mq_tag_set struct blk_mq_hw_ctx*/ 24 #include <linux/blk-mq.h> 25 #endif /* __GENKSYMS__ */ 26 struct bio; 27 struct request_queue; 28 struct request; 29 struct blk_plug; 30 struct blk_flush_queue; 31 32 DECLARE_HOOK(android_vh_blk_alloc_rqs, 33 TP_PROTO(size_t *rq_size, struct blk_mq_tag_set *set, 34 struct blk_mq_tags *tags), 35 TP_ARGS(rq_size, set, tags)); 36 37 DECLARE_HOOK(android_vh_blk_rq_ctx_init, 38 TP_PROTO(struct request *rq, struct blk_mq_tags *tags, 39 struct blk_mq_alloc_data *data, u64 alloc_time_ns), 40 TP_ARGS(rq, tags, data, alloc_time_ns)); 41 42 DECLARE_HOOK(android_vh_bio_free, 43 TP_PROTO(struct bio *bio), 44 TP_ARGS(bio)); 45 46 DECLARE_RESTRICTED_HOOK(android_rvh_internal_blk_mq_alloc_request, 47 TP_PROTO(bool *skip, int *tag, struct blk_mq_alloc_data *data), 48 TP_ARGS(skip, tag, data), 1); 49 50 DECLARE_HOOK(android_vh_internal_blk_mq_free_request, 51 TP_PROTO(bool *skip, struct request *rq, struct blk_mq_hw_ctx *hctx), 52 TP_ARGS(skip, rq, hctx)); 53 54 DECLARE_HOOK(android_vh_blk_mq_complete_request, 55 TP_PROTO(bool *skip, struct request *rq), 56 TP_ARGS(skip, rq)); 57 58 DECLARE_HOOK(android_vh_blk_mq_add_to_requeue_list, 59 TP_PROTO(bool *skip, struct request *rq, bool kick_requeue_list), 60 TP_ARGS(skip, rq, kick_requeue_list)); 61 62 DECLARE_HOOK(android_vh_blk_mq_get_driver_tag, 63 TP_PROTO(struct request *rq), 64 TP_ARGS(rq)); 65 66 DECLARE_RESTRICTED_HOOK(android_rvh_blk_mq_delay_run_hw_queue, 67 TP_PROTO(bool *skip, struct blk_mq_hw_ctx *hctx, bool async), 68 TP_ARGS(skip, hctx, async), 1); 69 70 DECLARE_HOOK(android_vh_blk_mq_run_hw_queue, 71 TP_PROTO(bool *need_run, struct blk_mq_hw_ctx *hctx), 72 TP_ARGS(need_run, hctx)); 73 74 DECLARE_HOOK(android_vh_blk_mq_insert_request, 75 TP_PROTO(bool *skip, struct blk_mq_hw_ctx *hctx, struct request *rq), 76 TP_ARGS(skip, hctx, rq)); 77 78 DECLARE_RESTRICTED_HOOK(android_rvh_blk_mq_alloc_rq_map, 79 TP_PROTO(bool *skip, struct blk_mq_tags **tags, 80 struct blk_mq_tag_set *set, int node, unsigned int flags), 81 TP_ARGS(skip, tags, set, node, flags), 1); 82 83 DECLARE_HOOK(android_vh_blk_mq_hctx_notify_dead, 84 TP_PROTO(bool *skip, struct blk_mq_hw_ctx *hctx), 85 TP_ARGS(skip, hctx)); 86 87 DECLARE_RESTRICTED_HOOK(android_rvh_blk_mq_init_allocated_queue, 88 TP_PROTO(struct request_queue *q), 89 TP_ARGS(q), 1); 90 91 DECLARE_HOOK(android_vh_blk_mq_exit_queue, 92 TP_PROTO(struct request_queue *q), 93 TP_ARGS(q)); 94 95 DECLARE_HOOK(android_vh_blk_mq_alloc_tag_set, 96 TP_PROTO(struct blk_mq_tag_set *set), 97 TP_ARGS(set)); 98 99 DECLARE_HOOK(android_vh_blk_mq_update_nr_requests, 100 TP_PROTO(bool *skip, struct request_queue *q), 101 TP_ARGS(skip, q)); 102 103 DECLARE_RESTRICTED_HOOK(android_rvh_blk_allocated_queue_init, 104 TP_PROTO(bool *skip, struct request_queue *q), 105 TP_ARGS(skip, q), 1); 106 107 DECLARE_RESTRICTED_HOOK(android_rvh_blk_flush_plug_list, 108 TP_PROTO(struct blk_plug *plug, bool from_schedule), 109 TP_ARGS(plug, from_schedule), 1); 110 111 DECLARE_HOOK(android_vh_blk_alloc_flush_queue, 112 TP_PROTO(bool *skip, int cmd_size, int flags, int node, 113 struct blk_flush_queue *fq), 114 TP_ARGS(skip, cmd_size, flags, node, fq)); 115 116 DECLARE_HOOK(android_vh_blk_mq_sched_insert_request, 117 TP_PROTO(bool *skip, struct request *rq), 118 TP_ARGS(skip, rq)); 119 120 #endif /* _TRACE_HOOK_BLOCK_H */ 121 122 /* This part must be outside protection */ 123 #include <trace/define_trace.h> 124