112 lines · c
1// SPDX-License-Identifier: GPL-2.02#include "trace.h"3 4/*5 * osnoise_context - read, store, write, restore osnoise configs.6 */7struct osnoise_context {8 int flags;9 int ref;10 11 char *curr_cpus;12 char *orig_cpus;13 14 /* 0 as init value */15 unsigned long long orig_runtime_us;16 unsigned long long runtime_us;17 18 /* 0 as init value */19 unsigned long long orig_period_us;20 unsigned long long period_us;21 22 /* 0 as init value */23 long long orig_timerlat_period_us;24 long long timerlat_period_us;25 26 /* 0 as init value */27 long long orig_tracing_thresh;28 long long tracing_thresh;29 30 /* -1 as init value because 0 is disabled */31 long long orig_stop_us;32 long long stop_us;33 34 /* -1 as init value because 0 is disabled */35 long long orig_stop_total_us;36 long long stop_total_us;37 38 /* -1 as init value because 0 is disabled */39 long long orig_print_stack;40 long long print_stack;41 42 /* -1 as init value because 0 is off */43 int orig_opt_irq_disable;44 int opt_irq_disable;45 46 /* -1 as init value because 0 is off */47 int orig_opt_workload;48 int opt_workload;49};50 51/*52 * *_INIT_VALs are also invalid values, they are used to53 * communicate errors.54 */55#define OSNOISE_OPTION_INIT_VAL (-1)56#define OSNOISE_TIME_INIT_VAL (0)57 58struct osnoise_context *osnoise_context_alloc(void);59int osnoise_get_context(struct osnoise_context *context);60void osnoise_put_context(struct osnoise_context *context);61 62int osnoise_set_cpus(struct osnoise_context *context, char *cpus);63void osnoise_restore_cpus(struct osnoise_context *context);64 65int osnoise_set_runtime_period(struct osnoise_context *context,66 unsigned long long runtime,67 unsigned long long period);68void osnoise_restore_runtime_period(struct osnoise_context *context);69 70int osnoise_set_stop_us(struct osnoise_context *context,71 long long stop_us);72void osnoise_restore_stop_us(struct osnoise_context *context);73 74int osnoise_set_stop_total_us(struct osnoise_context *context,75 long long stop_total_us);76void osnoise_restore_stop_total_us(struct osnoise_context *context);77 78int osnoise_set_timerlat_period_us(struct osnoise_context *context,79 long long timerlat_period_us);80void osnoise_restore_timerlat_period_us(struct osnoise_context *context);81 82int osnoise_set_tracing_thresh(struct osnoise_context *context,83 long long tracing_thresh);84void osnoise_restore_tracing_thresh(struct osnoise_context *context);85 86void osnoise_restore_print_stack(struct osnoise_context *context);87int osnoise_set_print_stack(struct osnoise_context *context,88 long long print_stack);89 90int osnoise_set_irq_disable(struct osnoise_context *context, bool onoff);91int osnoise_set_workload(struct osnoise_context *context, bool onoff);92 93/*94 * osnoise_tool - osnoise based tool definition.95 */96struct osnoise_tool {97 struct trace_instance trace;98 struct osnoise_context *context;99 void *data;100 void *params;101 time_t start_time;102};103 104void osnoise_destroy_tool(struct osnoise_tool *top);105struct osnoise_tool *osnoise_init_tool(char *tool_name);106struct osnoise_tool *osnoise_init_trace_tool(char *tracer);107 108int osnoise_hist_main(int argc, char *argv[]);109int osnoise_top_main(int argc, char **argv);110int osnoise_main(int argc, char **argv);111int hwnoise_main(int argc, char **argv);112