• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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