On 09/30/12 14:11, rustyBSD wrote:
are you sure about fresqet.c ? Just returning 1 ?
Not really.
I'm looking for a way to change the cpu freq
Mmhh...
The problem with openbsd's sysctl is that
we get cpu freq in Mhz, but we can only set
it in percents - and not up to 100%.
So I put percents instead of Mhz in the menu,
even if it sometimes causes some problems with
the "speedbar". But it works.
I'll continue later. You can commit these
patches.
--- e_mod_main.c Mon Oct 1 07:42:45 2012
+++ e_mod_main.c Mon Oct 1 07:43:43 2012
@@ -1,9 +1,8 @@
#include "e.h"
#include "e_mod_main.h"
-#ifdef __FreeBSD__
-#include <sys/types.h>
-#include <sys/sysctl.h>
+#if defined (__FreeBSD__) || defined (__OpenBSD__)
+# include <sys/sysctl.h>
#endif
/* gadcon requirements */
@@ -291,11 +290,17 @@
frequency = (long)l->data;
mi = e_menu_item_new(mo);
+
+#ifdef __OpenBSD__
+ snprintf(buf, sizeof(buf), _("%i %%"), frequency);
+#else
if (frequency < 1000000)
snprintf(buf, sizeof(buf), _("%i MHz"), frequency / 1000);
else
snprintf(buf, sizeof(buf), _("%'.1f GHz"),
frequency / 1000000.);
+#endif
+
buf[sizeof(buf) - 1] = 0;
e_menu_item_label_set(mi, buf);
e_menu_item_radio_set(mi, 1);
@@ -445,8 +451,10 @@
return;
}
- // change it to "userspace"
+#ifndef __OpenBSD__
+ /* OpenBSD doesn't have governors */
_cpufreq_set_governor("userspace");
+#endif
snprintf(buf, sizeof(buf),
"%s %s %i", cpufreq_config->set_exe_path, "frequency", frequency);
@@ -548,8 +556,40 @@
{
char buf[4096];
Eina_List *l;
- // FIXME: this sssumes all cores accept the same freqs/ might be wrong
-#ifdef __FreeBSD__
+ // FIXME: this assumes all cores accept the same freqs/ might be wrong
+
+#if defined (__OpenBSD__)
+ int freq, mib[] = {CTL_HW, HW_CPUSPEED};
+ size_t len = sizeof(freq);
+ int p;
+
+ if (sysctl(mib, 2, &freq, &len, NULL, 0) == 0)
+ {
+ if (s->frequencies)
+ {
+ eina_list_free(s->frequencies);
+ s->frequencies = NULL;
+ }
+
+ if (s->governors)
+ {
+ for (l = s->governors; l; l = l->next)
+ free(l->data);
+ eina_list_free(s->governors);
+ s->governors = NULL;
+ }
+
+ /* storing percents */
+ p = 100;
+ s->frequencies = eina_list_append(s->frequencies, (void *)p);
+ p = 75;
+ s->frequencies = eina_list_append(s->frequencies, (void *)p);
+ p = 50;
+ s->frequencies = eina_list_append(s->frequencies, (void *)p);
+ p = 25;
+ s->frequencies = eina_list_append(s->frequencies, (void *)p);
+ }
+#elif defined (__FreeBSD__)
int freq, i;
size_t len = 0;
char *freqs, *pos, *q;
@@ -665,15 +705,28 @@
static int
_cpufreq_status_check_current(Status *s)
{
- char buf[4096];
- int i;
- FILE *f;
int ret = 0;
int frequency = 0;
- int frequency_min = 0x7fffffff;
- int frequency_max = 0;
- int freqtot = 0;
-#ifdef __FreeBSD__
+
+#if defined (__OpenBSD__)
+ size_t len = sizeof(frequency);
+ int mib[] = {CTL_HW, HW_CPUSPEED};
+ s->active = 0;
+
+ _cpufreq_status_check_available(s);
+
+ if (sysctl(mib, 2, &frequency, &len, NULL, 0) == 0)
+ {
+ frequency *= 1000;
+ if (frequency != s->cur_frequency) ret = 1;
+ s->cur_frequency = frequency;
+ s->active = 1;
+ }
+
+ s->can_set_frequency = 1;
+ s->cur_governor = NULL;
+ s->cur_frequency = frequency;
+#elif defined (__FreeBSD__)
int len = 4;
s->active = 0;
@@ -690,6 +743,13 @@
s->can_set_frequency = 1;
s->cur_governor = NULL;
#else
+ char buf[4096];
+ FILE *f;
+ int frequency_min = 0x7fffffff;
+ int frequency_max = 0;
+ int freqtot = 0;
+ int i;
+
s->active = 0;
_cpufreq_status_check_available(s);
@@ -724,7 +784,7 @@
// printf("%i | %i %i\n", frequency, frequency_min, frequency_max);
- // FIXME: this sssumes all cores are on the same governor
+ // FIXME: this assumes all cores are on the same governor
f = fopen("/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed", "r");
if (f)
{
--- freqset.c Mon Oct 1 07:59:21 2012
+++ freqset.c Mon Oct 1 07:46:15 2012
@@ -5,10 +5,15 @@
#include <string.h>
#ifdef __FreeBSD__
-#include <sys/types.h>
-#include <sys/sysctl.h>
+# include <sys/sysctl.h>
#endif
+#ifdef __OpenBSD__
+# include <sys/param.h>
+# include <sys/resource.h>
+# include <sys/sysctl.h>
+#endif
+
static int sys_cpu_setall(const char *control, const char *value);
static int sys_cpufreq_set(const char *control, const char *value);
@@ -25,9 +30,29 @@
if (seteuid(0))
{
fprintf(stderr, "Unable to assume root privileges\n");
+ return 1;
}
-#ifdef __FreeBSD__
+#if defined __OpenBSD__
+ if (!strcmp(argv[1], "frequency"))
+ {
+ int mib[] = {CTL_HW, HW_SETPERF};
+ int new_perf = atoi(argv[2]);
+ size_t len = sizeof(new_perf);
+
+ if (sysctl(mib, 2, NULL, 0, &new_perf, len) == -1)
+ {
+ return 1;
+ }
+
+ return 0;
+ }
+ else
+ {
+ fprintf(stderr, "Unknown command (%s %s).\n", argv[1], argv[2]);
+ return 1;
+ }
+#elif defined __FreeBSD__
if (!strcmp(argv[1], "frequency"))
{
int new_frequency = atoi(argv[2]);
------------------------------------------------------------------------------
Got visibility?
Most devs has no idea what their production app looks like.
Find out how fast your code is with AppDynamics Lite.
http://ad.doubleclick.net/clk;262219671;13503038;y?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel