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