10605bf00SDaniel Bristot de Oliveira // SPDX-License-Identifier: GPL-2.0 20605bf00SDaniel Bristot de Oliveira #include "trace.h" 30605bf00SDaniel Bristot de Oliveira 40605bf00SDaniel Bristot de Oliveira /* 50605bf00SDaniel Bristot de Oliveira * osnoise_context - read, store, write, restore osnoise configs. 60605bf00SDaniel Bristot de Oliveira */ 70605bf00SDaniel Bristot de Oliveira struct osnoise_context { 80605bf00SDaniel Bristot de Oliveira int flags; 90605bf00SDaniel Bristot de Oliveira int ref; 100605bf00SDaniel Bristot de Oliveira 110605bf00SDaniel Bristot de Oliveira char *curr_cpus; 120605bf00SDaniel Bristot de Oliveira char *orig_cpus; 130605bf00SDaniel Bristot de Oliveira 140605bf00SDaniel Bristot de Oliveira /* 0 as init value */ 150605bf00SDaniel Bristot de Oliveira unsigned long long orig_runtime_us; 160605bf00SDaniel Bristot de Oliveira unsigned long long runtime_us; 170605bf00SDaniel Bristot de Oliveira 180605bf00SDaniel Bristot de Oliveira /* 0 as init value */ 190605bf00SDaniel Bristot de Oliveira unsigned long long orig_period_us; 200605bf00SDaniel Bristot de Oliveira unsigned long long period_us; 210605bf00SDaniel Bristot de Oliveira 220605bf00SDaniel Bristot de Oliveira /* 0 as init value */ 230605bf00SDaniel Bristot de Oliveira long long orig_timerlat_period_us; 240605bf00SDaniel Bristot de Oliveira long long timerlat_period_us; 250605bf00SDaniel Bristot de Oliveira 26*61c57d57SDaniel Bristot de Oliveira /* 0 as init value */ 27*61c57d57SDaniel Bristot de Oliveira long long orig_tracing_thresh; 28*61c57d57SDaniel Bristot de Oliveira long long tracing_thresh; 29*61c57d57SDaniel Bristot de Oliveira 300605bf00SDaniel Bristot de Oliveira /* -1 as init value because 0 is disabled */ 310605bf00SDaniel Bristot de Oliveira long long orig_stop_us; 320605bf00SDaniel Bristot de Oliveira long long stop_us; 330605bf00SDaniel Bristot de Oliveira 340605bf00SDaniel Bristot de Oliveira /* -1 as init value because 0 is disabled */ 350605bf00SDaniel Bristot de Oliveira long long orig_stop_total_us; 360605bf00SDaniel Bristot de Oliveira long long stop_total_us; 370605bf00SDaniel Bristot de Oliveira 380605bf00SDaniel Bristot de Oliveira /* -1 as init value because 0 is disabled */ 390605bf00SDaniel Bristot de Oliveira long long orig_print_stack; 400605bf00SDaniel Bristot de Oliveira long long print_stack; 410605bf00SDaniel Bristot de Oliveira }; 420605bf00SDaniel Bristot de Oliveira 430605bf00SDaniel Bristot de Oliveira /* 440605bf00SDaniel Bristot de Oliveira * *_INIT_VALs are also invalid values, they are used to 450605bf00SDaniel Bristot de Oliveira * communicate errors. 460605bf00SDaniel Bristot de Oliveira */ 470605bf00SDaniel Bristot de Oliveira #define OSNOISE_OPTION_INIT_VAL (-1) 480605bf00SDaniel Bristot de Oliveira #define OSNOISE_TIME_INIT_VAL (0) 490605bf00SDaniel Bristot de Oliveira 500605bf00SDaniel Bristot de Oliveira struct osnoise_context *osnoise_context_alloc(void); 510605bf00SDaniel Bristot de Oliveira int osnoise_get_context(struct osnoise_context *context); 520605bf00SDaniel Bristot de Oliveira void osnoise_put_context(struct osnoise_context *context); 530605bf00SDaniel Bristot de Oliveira 540605bf00SDaniel Bristot de Oliveira int osnoise_set_cpus(struct osnoise_context *context, char *cpus); 550605bf00SDaniel Bristot de Oliveira void osnoise_restore_cpus(struct osnoise_context *context); 560605bf00SDaniel Bristot de Oliveira 570605bf00SDaniel Bristot de Oliveira int osnoise_set_runtime_period(struct osnoise_context *context, 580605bf00SDaniel Bristot de Oliveira unsigned long long runtime, 590605bf00SDaniel Bristot de Oliveira unsigned long long period); 600605bf00SDaniel Bristot de Oliveira void osnoise_restore_runtime_period(struct osnoise_context *context); 610605bf00SDaniel Bristot de Oliveira 620605bf00SDaniel Bristot de Oliveira int osnoise_set_stop_us(struct osnoise_context *context, 630605bf00SDaniel Bristot de Oliveira long long stop_us); 640605bf00SDaniel Bristot de Oliveira void osnoise_restore_stop_us(struct osnoise_context *context); 650605bf00SDaniel Bristot de Oliveira 660605bf00SDaniel Bristot de Oliveira int osnoise_set_stop_total_us(struct osnoise_context *context, 670605bf00SDaniel Bristot de Oliveira long long stop_total_us); 680605bf00SDaniel Bristot de Oliveira void osnoise_restore_stop_total_us(struct osnoise_context *context); 690605bf00SDaniel Bristot de Oliveira 700605bf00SDaniel Bristot de Oliveira int osnoise_set_timerlat_period_us(struct osnoise_context *context, 710605bf00SDaniel Bristot de Oliveira long long timerlat_period_us); 720605bf00SDaniel Bristot de Oliveira void osnoise_restore_timerlat_period_us(struct osnoise_context *context); 730605bf00SDaniel Bristot de Oliveira 74*61c57d57SDaniel Bristot de Oliveira int osnoise_set_tracing_thresh(struct osnoise_context *context, 75*61c57d57SDaniel Bristot de Oliveira long long tracing_thresh); 76*61c57d57SDaniel Bristot de Oliveira void osnoise_restore_tracing_thresh(struct osnoise_context *context); 77*61c57d57SDaniel Bristot de Oliveira 780605bf00SDaniel Bristot de Oliveira void osnoise_restore_print_stack(struct osnoise_context *context); 790605bf00SDaniel Bristot de Oliveira int osnoise_set_print_stack(struct osnoise_context *context, 800605bf00SDaniel Bristot de Oliveira long long print_stack); 810605bf00SDaniel Bristot de Oliveira 820605bf00SDaniel Bristot de Oliveira /* 830605bf00SDaniel Bristot de Oliveira * osnoise_tool - osnoise based tool definition. 840605bf00SDaniel Bristot de Oliveira */ 850605bf00SDaniel Bristot de Oliveira struct osnoise_tool { 860605bf00SDaniel Bristot de Oliveira struct trace_instance trace; 870605bf00SDaniel Bristot de Oliveira struct osnoise_context *context; 880605bf00SDaniel Bristot de Oliveira void *data; 890605bf00SDaniel Bristot de Oliveira void *params; 900605bf00SDaniel Bristot de Oliveira time_t start_time; 910605bf00SDaniel Bristot de Oliveira }; 920605bf00SDaniel Bristot de Oliveira 930605bf00SDaniel Bristot de Oliveira void osnoise_destroy_tool(struct osnoise_tool *top); 940605bf00SDaniel Bristot de Oliveira struct osnoise_tool *osnoise_init_tool(char *tool_name); 950605bf00SDaniel Bristot de Oliveira struct osnoise_tool *osnoise_init_trace_tool(char *tracer); 960605bf00SDaniel Bristot de Oliveira 97829a6c0bSDaniel Bristot de Oliveira int osnoise_hist_main(int argc, char *argv[]); 981eceb2fcSDaniel Bristot de Oliveira int osnoise_top_main(int argc, char **argv); 990605bf00SDaniel Bristot de Oliveira int osnoise_main(int argc, char **argv); 100