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