xref: /linux/tools/tracing/rtla/src/timerlat.h (revision d9f24f8e60798c066ead61f77e67ee6a5a204514)
1 // SPDX-License-Identifier: GPL-2.0
2 #include "osnoise.h"
3 
4 /*
5  * Define timerlat tracing mode.
6  *
7  * There are three tracing modes:
8  * - tracefs-only, used when BPF is unavailable.
9  * - BPF-only, used when BPF is available and neither trace saving nor
10  * auto-analysis are enabled.
11  * - mixed mode, used when BPF is available and either trace saving or
12  * auto-analysis is enabled (which rely on sample collection through
13  * tracefs).
14  */
15 enum timerlat_tracing_mode {
16 	TRACING_MODE_BPF,
17 	TRACING_MODE_TRACEFS,
18 	TRACING_MODE_MIXED,
19 };
20 
21 struct timerlat_params {
22 	struct common_params	common;
23 	long long		timerlat_period_us;
24 	long long		print_stack;
25 	int			dma_latency;
26 	int			no_aa;
27 	int			dump_tasks;
28 	int			deepest_idle_state;
29 	enum timerlat_tracing_mode mode;
30 };
31 
32 #define to_timerlat_params(ptr) container_of(ptr, struct timerlat_params, common)
33 
34 int timerlat_apply_config(struct osnoise_tool *tool, struct timerlat_params *params);
35 int timerlat_main(int argc, char *argv[]);
36 int timerlat_enable(struct osnoise_tool *tool);
37 void timerlat_analyze(struct osnoise_tool *tool, bool stopped);
38 void timerlat_free(struct osnoise_tool *tool);
39 
40