| // SPDX-License-Identifier: GPL-2.0 |
| #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; |
| int no_aa; |
| int dump_tasks; |
| int deepest_idle_state; |
| enum timerlat_tracing_mode mode; |
| }; |
| |
| #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); |
| |