| // SPDX-License-Identifier: GPL-2.0 | |
| #pragma once | |
| #include "osnoise.h" | |
| /* | |
| * Define timerlat tracing mode. | |
| * | |
| * There are three tracing modes: | |
| * - tracefs-only, used when BPF is unavailable. | |
| * - BPF-only, used when BPF is available and neither trace saving nor | |
| * auto-analysis are enabled. | |
| * - mixed mode, used when BPF is available and either trace saving or | |
| * auto-analysis is enabled (which rely on sample collection through | |
| * tracefs). | |
| */ | |
| enum timerlat_tracing_mode { | |
| TRACING_MODE_BPF, | |
| TRACING_MODE_TRACEFS, | |
| TRACING_MODE_MIXED, | |
| }; | |
| struct timerlat_params { | |
| struct common_params common; | |
| long long timerlat_period_us; | |
| long long print_stack; | |
| int dma_latency; | |
| bool no_aa; | |
| bool dump_tasks; | |
| int deepest_idle_state; | |
| enum timerlat_tracing_mode mode; | |
| const char *bpf_action_program; | |
| enum stack_format stack_format; | |
| bool timerlat_align; | |
| unsigned long long timerlat_align_us; | |
| }; | |
| #define to_timerlat_params(ptr) container_of(ptr, struct timerlat_params, common) | |
| int timerlat_apply_config(struct osnoise_tool *tool, struct timerlat_params *params); | |
| int timerlat_main(int argc, char *argv[]); | |
| int timerlat_enable(struct osnoise_tool *tool); | |
| void timerlat_analyze(struct osnoise_tool *tool, bool stopped); | |
| void timerlat_free(struct osnoise_tool *tool); |