aboutsummaryrefslogtreecommitdiff
path: root/trayfreq_set/trayfreq_set.c
diff options
context:
space:
mode:
authorDavid <dbphillipsnz@gmail.com>2014-03-30 11:50:03 +1300
committerDavid <dbphillipsnz@gmail.com>2014-03-30 11:55:04 +1300
commit1b7114310f135ca81dfdc228c1c188c731a2d6e6 (patch)
tree11263c755b3cd98254dfebff0fd38c6a85d8d7b7 /trayfreq_set/trayfreq_set.c
parent6532d80ed657c0cbd8c56d2e875ea093dcfadacd (diff)
downloadparamano-1b7114310f135ca81dfdc228c1c188c731a2d6e6.tar.xz
Moved src/* to ./
Diffstat (limited to 'trayfreq_set/trayfreq_set.c')
-rw-r--r--trayfreq_set/trayfreq_set.c122
1 files changed, 122 insertions, 0 deletions
diff --git a/trayfreq_set/trayfreq_set.c b/trayfreq_set/trayfreq_set.c
new file mode 100644
index 0000000..083d993
--- /dev/null
+++ b/trayfreq_set/trayfreq_set.c
@@ -0,0 +1,122 @@
+/************************************************************************
+ * This file is part of trayfreq-archlinux. *
+ * *
+ * trayfreq-archlinux is free software; you can redistribute it and/or *
+ * modify it under the terms of the GNU General Public License as *
+ * published by the Free Software Foundation; either version 3 of the *
+ * License, or (at your option) any later version. *
+ * *
+ * trayfreq-archlinux is distributed in the hope that it will be useful,*
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with trayfreq-archlinux. If not, see *
+ * <http://www.gnu.org/licenses/>. *
+ ************************************************************************/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "../freq_tray/getfreq.h"
+#include "../freq_tray/getcore.h"
+
+void set_freq_max(char* freq, char* core)
+{
+ char file_path[100];
+ sprintf(file_path, "/sys/devices/system/cpu/cpu%s/cpufreq/scaling_max_freq", core);
+
+ FILE* fd = fopen(file_path, "w");
+ fprintf(fd, freq);
+ fclose(fd);
+}
+
+void set_freq_min(char* freq, char* core)
+{
+ char file_path[100];
+ sprintf(file_path, "/sys/devices/system/cpu/cpu%s/cpufreq/scaling_min_freq", core);
+
+ FILE* fd = fopen(file_path, "w");
+ fprintf(fd, freq);
+ fclose(fd);
+}
+
+static void set_speed(char* freq, char* core)
+{
+ char file_path[100];
+ sprintf(file_path, "/sys/devices/system/cpu/cpu%s/cpufreq/scaling_setspeed", core);
+
+ FILE* fd = fopen(file_path, "w");
+ fprintf(fd, freq);
+ fclose(fd);
+}
+
+void set_gov(char* gov, char* core)
+{
+ char file_path[100];
+ sprintf(file_path, "/sys/devices/system/cpu/cpu%s/cpufreq/scaling_governor", core);
+
+ FILE* fd = fopen(file_path, "w");
+ fprintf(fd, gov);
+ fclose(fd);
+}
+
+void set_freq(char* freq, char* core)
+{
+ set_gov("userspace", core);
+ set_speed(freq, core);
+}
+
+int main(int argc, char *argv[])
+{
+ gc_init();
+ gf_init();
+
+ if(!argv[1])
+ {
+ printf("Use -g to set the governor or -f to set the frequency.\n");
+ }
+ else if(strcmp(argv[1], "-g") == 0)
+ {
+ if(!argv[2])
+ printf("Pass the governor to set after the -g.\n");
+ else
+ {
+ if(!argv[3])
+ printf("Use -c to set the core.\n");
+ else if(strcmp(argv[3], "-c") == 0)
+ {
+ if(!argv[4])
+ printf("Pass the core to set after the -c.\n");
+ else
+ set_gov(argv[2], argv[4]);
+ } else
+ printf("Use -c to set the core.\n");
+ }
+ }
+ else if(strcmp(argv[1], "-f") == 0)
+ {
+ if(!argv[2])
+ {
+ printf("Pass the frequency to set after the -f.\n");
+ } else {
+ if(!argv[3])
+ {
+ printf("Use -c to set the core.\n");
+ } else if(strcmp(argv[3], "-c") == 0)
+ {
+ if(!argv[4])
+ printf("Pass the core to set after the -c.\n");
+ else
+ set_freq(argv[2], argv[4]);
+ } else {
+ printf("Use -c to set the core.\n");
+ }
+ }
+ } else {
+ printf("Use -g to set the governor or -f to set the frequency.\n");
+ }
+ return 0;
+} \ No newline at end of file