removed unnecesary gov check, simplified number of function calls, added timepassed check
This commit is contained in:
parent
a4290beb57
commit
b83902efb9
|
@ -124,30 +124,6 @@ int main(int argc, char** argv){
|
||||||
fprintf(stderr, "error: maxtemp must be higher than mintemp\n");
|
fprintf(stderr, "error: maxtemp must be higher than mintemp\n");
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
/* try to open scaling_current_governor, exit on fail */
|
|
||||||
FILE* govfile = fopen(CURGOV, "r");
|
|
||||||
if (govfile == NULL){
|
|
||||||
fprintf(stderr, "error: couldn't open scaling_current_governor\n");
|
|
||||||
fprintf(stderr, " check that you have support for cpufreq\n");
|
|
||||||
fprintf(stderr, " and the userspace governor in your kernel\n");
|
|
||||||
fprintf(stderr, " also check that you're running this program\n");
|
|
||||||
fprintf(stderr, " as root\n");
|
|
||||||
return 3;
|
|
||||||
}
|
|
||||||
/* assign content of govfile to a temporary char array */
|
|
||||||
char* gov = malloc(sizeof(char) * 20);
|
|
||||||
getfilec(govfile, gov);
|
|
||||||
/* check content of scaling_current_governor and exit on failure */
|
|
||||||
if (comparestrings(gov, "userspace\n") != 0){
|
|
||||||
fprintf(stderr, "error: userspace governor not set\n");
|
|
||||||
/* free memory and close file */
|
|
||||||
free(gov);
|
|
||||||
fclose(govfile);
|
|
||||||
return 4;
|
|
||||||
}
|
|
||||||
/* free memory and close file */
|
|
||||||
free(gov);
|
|
||||||
fclose(govfile);
|
|
||||||
/* try to open scaling_available_frequencies, exit on fail */
|
/* try to open scaling_available_frequencies, exit on fail */
|
||||||
FILE *freqsfile = fopen(FREQS, "r");
|
FILE *freqsfile = fopen(FREQS, "r");
|
||||||
if (freqsfile == NULL){
|
if (freqsfile == NULL){
|
||||||
|
@ -203,15 +179,17 @@ int main(int argc, char** argv){
|
||||||
fprintf(stderr, " running as root\n");
|
fprintf(stderr, " running as root\n");
|
||||||
return 7;
|
return 7;
|
||||||
}
|
}
|
||||||
|
int timepassed = 0;
|
||||||
FILE* curtempfile;
|
FILE* curtempfile;
|
||||||
/* from here onwards an infinite while loop should start */
|
/* from here onwards an infinite while loop should start */
|
||||||
while((curtempfile = fopen(CURTEMPPATH, "r")) != NULL){
|
while((curtempfile = fopen(CURTEMPPATH, "r")) != NULL){
|
||||||
char* temperature = malloc(sizeof(char) * 8);
|
timepassed++;
|
||||||
getfilec(curtempfile, temperature);
|
char* char_temperature = malloc(sizeof(char) * 8);
|
||||||
newlinetonullbyte(temperature);
|
getfilec(curtempfile, char_temperature);
|
||||||
|
newlinetonullbyte(char_temperature);
|
||||||
|
int temperature = stringtoint(temperature, stringlength(temperature));
|
||||||
/* check if current temp is higher than max and step down */
|
/* check if current temp is higher than max and step down */
|
||||||
if (stringtoint(temperature, stringlength(temperature)) >= maxtemp
|
if (tempreature >= maxtemp && curstep < stepc - 1){
|
||||||
&& curstep < stepc - 1){
|
|
||||||
curstep++;
|
curstep++;
|
||||||
curmaxfile = fopen(MAXSPDPATH, "w");
|
curmaxfile = fopen(MAXSPDPATH, "w");
|
||||||
if (curmaxfile == NULL){
|
if (curmaxfile == NULL){
|
||||||
|
@ -223,10 +201,10 @@ int main(int argc, char** argv){
|
||||||
}
|
}
|
||||||
fprintf(curmaxfile, "%s\n", steps[curstep]);
|
fprintf(curmaxfile, "%s\n", steps[curstep]);
|
||||||
fclose(curmaxfile);
|
fclose(curmaxfile);
|
||||||
|
timepassed = 0;
|
||||||
}
|
}
|
||||||
/* check if current temp is lower than min and step down */
|
/* check if current temp is lower than min and step down */
|
||||||
if (stringtoint(temperature, stringlength(temperature)) <= mintemp
|
if (temperature <= mintemp && curstep > 0){
|
||||||
&& curstep > 0){
|
|
||||||
curstep--;
|
curstep--;
|
||||||
curmaxfile = fopen(MAXSPDPATH, "w");
|
curmaxfile = fopen(MAXSPDPATH, "w");
|
||||||
if (curmaxfile == NULL){
|
if (curmaxfile == NULL){
|
||||||
|
@ -238,8 +216,24 @@ int main(int argc, char** argv){
|
||||||
}
|
}
|
||||||
fprintf(curmaxfile, "%s\n", steps[curstep]);
|
fprintf(curmaxfile, "%s\n", steps[curstep]);
|
||||||
fclose(curmaxfile);
|
fclose(curmaxfile);
|
||||||
|
timepassed = 0;
|
||||||
}
|
}
|
||||||
free(temperature);
|
/* check if a minute passed without step changes and temp is below minmax average */
|
||||||
|
if (timepassed > 60 && temperature <= (mintemp+maxtemp)/2 && curstep < stepc - 1){
|
||||||
|
curstep++;
|
||||||
|
curmaxfile = fopen(MAXSPDPATH, "w");
|
||||||
|
if (curmaxfile == NULL){
|
||||||
|
fprintf(stderr, "error: couldn't open scaling_maximum_frequency\n");
|
||||||
|
fprintf(stderr, " check that you have support for cpufreq\n");
|
||||||
|
fprintf(stderr, " in your kernel and that the program is\n");
|
||||||
|
fprintf(stderr, " running as root\n");
|
||||||
|
return 6;
|
||||||
|
}
|
||||||
|
fprintf(curmaxfile, "%s\n", steps[curstep]);
|
||||||
|
fclose(curmaxfile);
|
||||||
|
timepassed = 0;
|
||||||
|
}
|
||||||
|
free(char_temperature);
|
||||||
fclose(curtempfile);
|
fclose(curtempfile);
|
||||||
sleep(POLLING_TIME);
|
sleep(POLLING_TIME);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue