1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*  cpufreq-bench CPUFreq microbenchmark
3  *
4  *  Copyright (C) 2008 Christian Kornacker <ckornacker@suse.de>
5  */
6 
7 /* struct that holds the required config parameters */
8 struct config
9 {
10 	long sleep;		/* sleep time in µs */
11 	long load;		/* load time in µs */
12 	long sleep_step;	/* time value which changes the
13 				 * sleep time after every round in µs */
14 	long load_step;		/* time value which changes the
15 				 * load time after every round in µs */
16 	unsigned int cycles;	/* calculation cycles with the same sleep/load time */
17 	unsigned int rounds;	/* calculation rounds with iterated sleep/load time */
18 	unsigned int cpu;	/* cpu for which the affinity is set */
19 	char governor[15];	/* cpufreq governor */
20 	enum sched_prio		/* possible scheduler priorities */
21 	{
22 		SCHED_ERR = -1,
23 		SCHED_HIGH,
24 		SCHED_DEFAULT,
25 		SCHED_LOW
26 	} prio;
27 
28 	unsigned int verbose;	/* verbose output */
29 	FILE *output;		/* logfile */
30 	char *output_filename;	/* logfile name, must be freed at the end
31 				   if output != NULL and output != stdout*/
32 };
33 
34 enum sched_prio string_to_prio(const char *str);
35 
36 FILE *prepare_output(const char *dir);
37 
38 int prepare_config(const char *path, struct config *config);
39 struct config *prepare_default_config();
40 
41