aboutsummaryrefslogtreecommitdiffstats
path: root/cputemp2maxfreq.c
diff options
context:
space:
mode:
Diffstat (limited to 'cputemp2maxfreq.c')
-rw-r--r--cputemp2maxfreq.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/cputemp2maxfreq.c b/cputemp2maxfreq.c
index 597f1e8..ad27062 100644
--- a/cputemp2maxfreq.c
+++ b/cputemp2maxfreq.c
@@ -29,6 +29,7 @@ struct s_config config={
0, // Don't overwrite CSV logfile
NULL, // File handler for CSV file
0, // Don't use unix timestamps in log outputs
+ -1, // Transition latency, default to autodetect
};
struct s_cpudata cpudata;
@@ -38,11 +39,19 @@ void signal_handler(int signum)
failsafe(0);
}
+char *transition_latency_remarks[] = {
+ "Autodetected",
+ "Set via commandline",
+ "This seems low, consider setting it via -d"
+};
+
int main(int argc,char **argv)
{
long int diff;
long int newfreq;
+ char *transition_latency_remark;
+
argparse(argc,argv);
config.logger("%s version %s, buildtime %s %s",config.name,version(),__DATE__,__TIME__);
@@ -64,6 +73,12 @@ int main(int argc,char **argv)
config.logger("Overwrite CSV log: %d",config.csvoverwrite);
}
config.logger("Use unix timestamps: %d",config.use_unixtime);
+ if (config.transition_latency<0)
+ {
+ config.logger("Transition latency: Autodetect");
+ } else {
+ config.logger("Transition latency: %d",config.transition_latency);
+ }
if ((config.max_temp<VALID_TEMP_MIN) || (config.max_temp>VALID_TEMP_MAX))
{
@@ -87,13 +102,21 @@ int main(int argc,char **argv)
cpudata.min_freq=sysfs_read_long_int("/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_min_freq");
cpudata.max_freq=sysfs_read_long_int("/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_max_freq");
cpudata.scale_max=sysfs_read_long_int("/sys/devices/system/cpu/cpufreq/policy0/scaling_max_freq");
- cpudata.transition_latency=sysfs_read_long_int("/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_transition_latency");
+ if (config.transition_latency<0)
+ {
+ transition_latency_remark=transition_latency_remarks[0];
+ cpudata.transition_latency=sysfs_read_long_int("/sys/devices/system/cpu/cpufreq/policy0/cpuinfo_transition_latency");
+ if (cpudata.transition_latency<1000) transition_latency_remark=transition_latency_remarks[2];
+ } else {
+ transition_latency_remark=transition_latency_remarks[1];
+ cpudata.transition_latency=config.transition_latency;
+ }
config.logger("CPU data:");
config.logger("Minimum frequency: %ld",cpudata.min_freq);
config.logger("Maximum frequency: %ld",cpudata.max_freq);
config.logger("Scaling maximum frequency: %ld",cpudata.scale_max);
- config.logger("Transition Latency: %ld",cpudata.transition_latency);
+ config.logger("Transition Latency: %ld (%s)",cpudata.transition_latency,transition_latency_remark);
if ((cpudata.min_freq<VALID_FREQ_MIN) || (cpudata.min_freq>VALID_FREQ_MAX) ||
(cpudata.max_freq<VALID_FREQ_MIN) || (cpudata.max_freq>VALID_FREQ_MAX) ||