cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

osnoise.h (2893B)


      1// SPDX-License-Identifier: GPL-2.0
      2#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
     43/*
     44 * *_INIT_VALs are also invalid values, they are used to
     45 * communicate errors.
     46 */
     47#define OSNOISE_OPTION_INIT_VAL	(-1)
     48#define OSNOISE_TIME_INIT_VAL	(0)
     49
     50struct osnoise_context *osnoise_context_alloc(void);
     51int osnoise_get_context(struct osnoise_context *context);
     52void osnoise_put_context(struct osnoise_context *context);
     53
     54int osnoise_set_cpus(struct osnoise_context *context, char *cpus);
     55void osnoise_restore_cpus(struct osnoise_context *context);
     56
     57int osnoise_set_runtime_period(struct osnoise_context *context,
     58			       unsigned long long runtime,
     59			       unsigned long long period);
     60void osnoise_restore_runtime_period(struct osnoise_context *context);
     61
     62int osnoise_set_stop_us(struct osnoise_context *context,
     63			long long stop_us);
     64void osnoise_restore_stop_us(struct osnoise_context *context);
     65
     66int osnoise_set_stop_total_us(struct osnoise_context *context,
     67			      long long stop_total_us);
     68void osnoise_restore_stop_total_us(struct osnoise_context *context);
     69
     70int osnoise_set_timerlat_period_us(struct osnoise_context *context,
     71				   long long timerlat_period_us);
     72void osnoise_restore_timerlat_period_us(struct osnoise_context *context);
     73
     74int osnoise_set_tracing_thresh(struct osnoise_context *context,
     75			       long long tracing_thresh);
     76void osnoise_restore_tracing_thresh(struct osnoise_context *context);
     77
     78void osnoise_restore_print_stack(struct osnoise_context *context);
     79int osnoise_set_print_stack(struct osnoise_context *context,
     80			    long long print_stack);
     81
     82/*
     83 * osnoise_tool -  osnoise based tool definition.
     84 */
     85struct osnoise_tool {
     86	struct trace_instance		trace;
     87	struct osnoise_context		*context;
     88	void				*data;
     89	void				*params;
     90	time_t				start_time;
     91};
     92
     93void osnoise_destroy_tool(struct osnoise_tool *top);
     94struct osnoise_tool *osnoise_init_tool(char *tool_name);
     95struct osnoise_tool *osnoise_init_trace_tool(char *tracer);
     96
     97int osnoise_hist_main(int argc, char *argv[]);
     98int osnoise_top_main(int argc, char **argv);
     99int osnoise_main(int argc, char **argv);