11a59d1b8SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 27fe2f639SDominik Brodowski /* cpufreq-bench CPUFreq microbenchmark 37fe2f639SDominik Brodowski * 47fe2f639SDominik Brodowski * Copyright (C) 2008 Christian Kornacker <ckornacker@suse.de> 57fe2f639SDominik Brodowski */ 67fe2f639SDominik Brodowski 77fe2f639SDominik Brodowski /* struct that holds the required config parameters */ 87fe2f639SDominik Brodowski struct config 97fe2f639SDominik Brodowski { 1002af3cb5SDominik Brodowski long sleep; /* sleep time in µs */ 1102af3cb5SDominik Brodowski long load; /* load time in µs */ 127fe2f639SDominik Brodowski long sleep_step; /* time value which changes the 1302af3cb5SDominik Brodowski * sleep time after every round in µs */ 147fe2f639SDominik Brodowski long load_step; /* time value which changes the 1502af3cb5SDominik Brodowski * load time after every round in µs */ 167fe2f639SDominik Brodowski unsigned int cycles; /* calculation cycles with the same sleep/load time */ 177fe2f639SDominik Brodowski unsigned int rounds; /* calculation rounds with iterated sleep/load time */ 187fe2f639SDominik Brodowski unsigned int cpu; /* cpu for which the affinity is set */ 197fe2f639SDominik Brodowski char governor[15]; /* cpufreq governor */ 207fe2f639SDominik Brodowski enum sched_prio /* possible scheduler priorities */ 217fe2f639SDominik Brodowski { 2202af3cb5SDominik Brodowski SCHED_ERR = -1, 2302af3cb5SDominik Brodowski SCHED_HIGH, 2402af3cb5SDominik Brodowski SCHED_DEFAULT, 2502af3cb5SDominik Brodowski SCHED_LOW 267fe2f639SDominik Brodowski } prio; 277fe2f639SDominik Brodowski 287fe2f639SDominik Brodowski unsigned int verbose; /* verbose output */ 297fe2f639SDominik Brodowski FILE *output; /* logfile */ 307fe2f639SDominik Brodowski char *output_filename; /* logfile name, must be freed at the end 317fe2f639SDominik Brodowski if output != NULL and output != stdout*/ 327fe2f639SDominik Brodowski }; 337fe2f639SDominik Brodowski 347fe2f639SDominik Brodowski enum sched_prio string_to_prio(const char *str); 357fe2f639SDominik Brodowski 367fe2f639SDominik Brodowski FILE *prepare_output(const char *dir); 377fe2f639SDominik Brodowski 387fe2f639SDominik Brodowski int prepare_config(const char *path, struct config *config); 397fe2f639SDominik Brodowski struct config *prepare_default_config(); 407fe2f639SDominik Brodowski 41