On Mon, Apr 13, 2015 at 11:02 AM, Daniel Kolesa <d.kol...@samsung.com> wrote:
> q66 pushed a commit to branch master. > > > http://git.enlightenment.org/core/enlightenment.git/commit/?id=4389030678cd44989825eda7b0c7a3b2fa0c9cbc > > commit 4389030678cd44989825eda7b0c7a3b2fa0c9cbc > Author: Daniel Kolesa <d.kol...@samsung.com> > Oops, sorry, it set me as author here because the guy doesn't have his git config right. Gotta check next time... D5 > Date: Mon Apr 13 11:02:33 2015 +0100 > > tempget: Add more temperature sources for FreeBSD > > Summary: > Not all motherboards have 'hw.acpi.thermal.tz0.temperature' sensor. > Fallback to 'dev.cpu.0.temperature' (provided by coretemp(4) or > amdtemp(4)), or 'dev.aibs.0.temp.0' (aibs(4)) (per suggestion of Dmitry > Luhtionov). > > Test Plan: Ran `src/modules/temperature/tempget` manually with some > debugging printfs and various sensors commented out. I can only test tz0 > and dev.cpu (coretemp(4)) on my system. > > Reviewers: zmike, q66 > > Reviewed By: q66 > > Subscribers: seoz > > Projects: #enlightenment-git > > Differential Revision: https://phab.enlightenment.org/D2335 > --- > src/modules/temperature/tempget.c | 44 > +++++++++++++++++++++++++++++---------- > 1 file changed, 33 insertions(+), 11 deletions(-) > > diff --git a/src/modules/temperature/tempget.c > b/src/modules/temperature/tempget.c > index b033341..a2e05a2 100644 > --- a/src/modules/temperature/tempget.c > +++ b/src/modules/temperature/tempget.c > @@ -6,6 +6,7 @@ > #ifdef __FreeBSD__ > # include <sys/types.h> > # include <sys/sysctl.h> > +# include <errno.h> > #endif > > #ifdef __OpenBSD__ > @@ -28,7 +29,17 @@ static int cur_poll_interval = 32; > > static char *sensor_path = NULL; > #if defined (__FreeBSD__) || defined (__OpenBSD__) > -static int mib[5]; > +static int mib[CTL_MAXNAME]; > +#endif > +#ifdef __FreeBSD__ > +static unsigned miblen; > +static const char *sources[] = > + { > + "hw.acpi.thermal.tz0.temperature", > + "dev.cpu.0.temperature", > + "dev.aibs.0.temp.0", > + NULL > + }; > #endif > > #ifdef __OpenBSD__ > @@ -95,7 +106,9 @@ init(void) > Eina_List *therms; > char path[PATH_MAX]; > #ifdef __FreeBSD__ > + unsigned i; > size_t len; > + int rc; > #endif > > if ((!sensor_type) || ((!sensor_name) || (sensor_name[0] == 0))) > @@ -103,9 +116,16 @@ init(void) > E_FREE(sensor_name); > E_FREE(sensor_path); > #ifdef __FreeBSD__ > - /* TODO: FreeBSD can also have more temperature sensors! */ > - sensor_type = SENSOR_TYPE_FREEBSD; > - sensor_name = strdup("tz0"); > + for (i = 0; sources[i]; i++) > + { > + rc = sysctlbyname(sources[i], NULL, NULL, NULL, 0); > + if (rc == 0) > + { > + sensor_type = SENSOR_TYPE_FREEBSD; > + sensor_name = strdup(sources[i]); > + break; > + } > + } > #elif __OpenBSD__ > mib[0] = CTL_HW; > mib[1] = HW_SENSORS; > @@ -270,11 +290,13 @@ init(void) > > case SENSOR_TYPE_FREEBSD: > #ifdef __FreeBSD__ > - snprintf(path, sizeof(path), > "hw.acpi.thermal.%s.temperature", > - sensor_name); > - sensor_path = strdup(path); > - len = 5; > - sysctlnametomib(sensor_path, mib, &len); > + len = sizeof(mib) / sizeof(mib[0]); > + rc = sysctlnametomib(sensor_name, mib, &len); > + if (rc == 0) > + { > + miblen = len; > + sensor_path = strdup(sensor_name); > + } > #endif > break; > > @@ -394,8 +416,8 @@ check(void) > > case SENSOR_TYPE_FREEBSD: > #ifdef __FreeBSD__ > - len = sizeof(temp); > - if (sysctl(mib, 5, &ftemp, &len, NULL, 0) != -1) > + len = sizeof(ftemp); > + if (sysctl(mib, miblen, &ftemp, &len, NULL, 0) == 0) > { > temp = (ftemp - 2732) / 10; > ret = 1; > > -- > > > ------------------------------------------------------------------------------ BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT Develop your own process in accordance with the BPMN 2 standard Learn Process modeling best practices with Bonita BPM through live exercises http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_ source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel