// 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);
// 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);