forked from enlightenment/enlightenment
cpufreq: FreeBSD et al.
Fix CPU frequency setting on FreeBSD/DragonFlyBSD. Also fix the display of the dial so it behaves identically to the Linux gadget.
This commit is contained in:
parent
1fa239b404
commit
e820efd81d
|
@ -62,7 +62,7 @@ static void _cpufreq_menu_frequency(void *data, E_Menu *m, E_Menu_Item *mi)
|
||||||
static void _cpufreq_menu_pstate_min(void *data, E_Menu *m, E_Menu_Item *mi);
|
static void _cpufreq_menu_pstate_min(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||||
static void _cpufreq_menu_pstate_max(void *data, E_Menu *m, E_Menu_Item *mi);
|
static void _cpufreq_menu_pstate_max(void *data, E_Menu *m, E_Menu_Item *mi);
|
||||||
|
|
||||||
#if defined(__FreeBSD__) || defined(__DragonFly__) || defined (__OpenBSD__)
|
#if defined (__OpenBSD__)
|
||||||
#else
|
#else
|
||||||
static int _cpufreq_cb_sort(const void *item1, const void *item2);
|
static int _cpufreq_cb_sort(const void *item1, const void *item2);
|
||||||
#endif
|
#endif
|
||||||
|
@ -586,8 +586,8 @@ _cpufreq_set_frequency(int frequency)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef __OpenBSD__
|
#if !defined(__FreeBSD__) && !defined(__OpenBSD__) && !defined(__DragonFly__)
|
||||||
/* OpenBSD doesn't have governors */
|
/* No governors (yet). */
|
||||||
_cpufreq_set_governor("userspace");
|
_cpufreq_set_governor("userspace");
|
||||||
#endif
|
#endif
|
||||||
_cpufreq_response_init();
|
_cpufreq_response_init();
|
||||||
|
@ -634,7 +634,7 @@ _cpufreq_status_free(Cpu_Status *s)
|
||||||
free(s);
|
free(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__FreeBSD__) || defined(__DragonFly__) || defined (__OpenBSD__)
|
#if defined (__OpenBSD__)
|
||||||
#else
|
#else
|
||||||
static int
|
static int
|
||||||
_cpufreq_cb_sort(const void *item1, const void *item2)
|
_cpufreq_cb_sort(const void *item1, const void *item2)
|
||||||
|
@ -678,6 +678,8 @@ _cpufreq_status_check_available(Cpu_Status *s)
|
||||||
p = 25;
|
p = 25;
|
||||||
s->frequencies = eina_list_append(s->frequencies, (void *)(long int)p);
|
s->frequencies = eina_list_append(s->frequencies, (void *)(long int)p);
|
||||||
#elif defined (__FreeBSD__) || defined(__DragonFly__)
|
#elif defined (__FreeBSD__) || defined(__DragonFly__)
|
||||||
|
int freq_min = 0x7fffffff;
|
||||||
|
int freq_max = 0;
|
||||||
int freq;
|
int freq;
|
||||||
size_t len = sizeof(buf);
|
size_t len = sizeof(buf);
|
||||||
char *pos, *q;
|
char *pos, *q;
|
||||||
|
@ -702,11 +704,20 @@ _cpufreq_status_check_available(Cpu_Status *s)
|
||||||
*q = '\0';
|
*q = '\0';
|
||||||
freq = atoi(pos);
|
freq = atoi(pos);
|
||||||
freq *= 1000;
|
freq *= 1000;
|
||||||
|
|
||||||
|
if (freq > freq_max) freq_max = freq;
|
||||||
|
if (freq < freq_min) freq_min = freq;
|
||||||
|
|
||||||
s->frequencies = eina_list_append(s->frequencies, (void *)(long)freq);
|
s->frequencies = eina_list_append(s->frequencies, (void *)(long)freq);
|
||||||
|
|
||||||
pos = q + 1;
|
pos = q + 1;
|
||||||
pos = strchr(pos, ' ');
|
pos = strchr(pos, ' ');
|
||||||
}
|
}
|
||||||
|
s->cur_min_frequency = freq_min;
|
||||||
|
s->cur_max_frequency = freq_max;
|
||||||
|
s->frequencies = eina_list_sort(s->frequencies,
|
||||||
|
eina_list_count(s->frequencies),
|
||||||
|
_cpufreq_cb_sort);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* sort is not necessary because freq_levels is already sorted */
|
/* sort is not necessary because freq_levels is already sorted */
|
||||||
|
@ -875,6 +886,8 @@ _cpufreq_status_check_current(Cpu_Status *s)
|
||||||
size_t len = sizeof(frequency);
|
size_t len = sizeof(frequency);
|
||||||
s->active = 0;
|
s->active = 0;
|
||||||
|
|
||||||
|
_cpufreq_status_check_available(s);
|
||||||
|
|
||||||
/* frequency is stored in dev.cpu.0.freq */
|
/* frequency is stored in dev.cpu.0.freq */
|
||||||
if (sysctlbyname("dev.cpu.0.freq", &frequency, &len, NULL, 0) == 0)
|
if (sysctlbyname("dev.cpu.0.freq", &frequency, &len, NULL, 0) == 0)
|
||||||
{
|
{
|
||||||
|
@ -887,7 +900,6 @@ _cpufreq_status_check_current(Cpu_Status *s)
|
||||||
/* hardcoded for testing */
|
/* hardcoded for testing */
|
||||||
s->can_set_frequency = 1;
|
s->can_set_frequency = 1;
|
||||||
s->cur_governor = NULL;
|
s->cur_governor = NULL;
|
||||||
|
|
||||||
#else
|
#else
|
||||||
char buf[4096];
|
char buf[4096];
|
||||||
FILE *f;
|
FILE *f;
|
||||||
|
@ -1043,7 +1055,7 @@ _cpufreq_face_update_available(Instance *inst)
|
||||||
edje_object_message_send(inst->o_cpu, EDJE_MESSAGE_STRING_SET, 2, governor_msg);
|
edje_object_message_send(inst->o_cpu, EDJE_MESSAGE_STRING_SET, 2, governor_msg);
|
||||||
free(governor_msg);
|
free(governor_msg);
|
||||||
}
|
}
|
||||||
#if defined(__OpenBSD__)
|
#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
|
||||||
_cpufreq_face_update_current(inst);
|
_cpufreq_face_update_current(inst);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue