aboutsummaryrefslogtreecommitdiff
path: root/trayfreq_set
diff options
context:
space:
mode:
Diffstat (limited to 'trayfreq_set')
-rw-r--r--trayfreq_set/trayfreq_set.c122
-rw-r--r--trayfreq_set/trayfreq_set_interface.c46
-rw-r--r--trayfreq_set/trayfreq_set_interface.h25
3 files changed, 193 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
diff --git a/trayfreq_set/trayfreq_set_interface.c b/trayfreq_set/trayfreq_set_interface.c
new file mode 100644
index 0000000..040513a
--- /dev/null
+++ b/trayfreq_set/trayfreq_set_interface.c
@@ -0,0 +1,46 @@
+/************************************************************************
+ * 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 "trayfreq_set_interface.h"
+
+#include <gtk/gtk.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+void si_gov(char* gov, int core)
+{
+ char corestr[4];
+ sprintf(corestr, "%i", core);
+
+ char* cmd = g_strconcat("/usr/bin/trayfreq-set -g ", gov, " -c ", corestr, NULL);
+ system(cmd);
+ g_free(cmd);
+}
+
+void si_freq(int freq, int core)
+{
+ char corestr[4];
+ char freqstr[13];
+
+ sprintf(corestr, "%i", core);
+ sprintf(freqstr, "%i", freq);
+
+ char* cmd = g_strconcat("/usr/bin/trayfreq-set -f ", freqstr, " -c ", corestr, NULL);
+ system(cmd);
+ g_free(cmd);
+} \ No newline at end of file
diff --git a/trayfreq_set/trayfreq_set_interface.h b/trayfreq_set/trayfreq_set_interface.h
new file mode 100644
index 0000000..3f1cdbc
--- /dev/null
+++ b/trayfreq_set/trayfreq_set_interface.h
@@ -0,0 +1,25 @@
+/************************************************************************
+ * 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/>. *
+ ************************************************************************/
+
+#ifndef TRAYFREQ_SET_INTERFACE_H
+#define TRAYFREQ_SET_INTERFACE_H 1
+
+void si_gov(char* gov, int core);
+void si_freq(int freq, int core);
+
+#endif \ No newline at end of file