mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2026-05-14 21:38:46 +02:00
2f3172f9dd
Currently a lot of code is duplicated between the different rtla tools, making maintenance more difficult, and encouraging divergence such as features that are only implemented for certain tools even though they could be more broadly applicable. Merge the various main() functions into a common run_tool() with an ops struct for tool-specific details. Implement enough support for actions on osnoise to not need to keep the old params->trace_output path. Cc: John Kacur <jkacur@redhat.com> Cc: Costa Shulyupin <costa.shul@redhat.com> Link: https://lore.kernel.org/20250907022325.243930-5-crwood@redhat.com Reviewed-by: Tomas Glozar <tglozar@redhat.com> Signed-off-by: Crystal Wood <crwood@redhat.com> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
40 lines
1.1 KiB
C
40 lines
1.1 KiB
C
// 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);
|
|
|