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