#ifndef HAVE_CPUTEMP2MAXFREQ_H #define HAVE_CPUTEMP2MAXFREQ_H // Valid frequencies are between 100MHz and 10GHz #define VALID_FREQ_MIN 100000 #define VALID_FREQ_MAX 10000000 // Valid frequency steps are between 1MHz and 1GHz #define VALID_STEP_MIN 1000 #define VALID_STEP_MAX 1000000 // Valid temperatures are between 10 and 150 degrees #define VALID_TEMP_MIN 10000 #define VALID_TEMP_MAX 150000 // Valid intervals are between 1 and 30 #define VALID_INTERVAL_MIN 1 #define VALID_INTERVAL_MAX 30 // Valid transition delays between 0 and 100000 #define VALID_TRANS_MIN 0 #define VALID_TRANS_MAX 100000 struct s_cpudata { long int min_freq; // CPU's minimum frequency long int max_freq; // CPU's maximum frequency long int cur_freq; // CPU's current frequency long int cur_temp; // CPU's current temperature long int scale_max; // Governor's maximum scaling frequency long int transition_latency; // CPU's transition latency }; struct s_config { char name[255]; // Name of this program char governor[255]; // The governor to use long int max_temp; // The target temperature char temp_input[255]; // Input file to read the temperature long int freq_step; // Step size to increase/decrease CPU frequency long int fallback_freq; // CPU frquency to set if we fail to protect hardware unsigned int interval; // Time interval to check CPU temperature char logger_name[10]; // Name of the logging function void (*logger)(char *,...); // Pointer to the logging function char log_data; // Option to log measurement data char csvlog[255]; // CSV logfile char csvoverwrite; // Overwrite CSV file if it already exists FILE *csvfile; // File handle for CSV file char use_unixtime; // Use unixtime timestamps in logs and CSV }; #endif