temp - split bsd and linux code to make it easier to read
This commit is contained in:
parent
808f15957b
commit
8421011f78
|
@ -1,16 +1,7 @@
|
||||||
#include "e.h"
|
#include "e.h"
|
||||||
#include "e_mod_main.h"
|
#include "e_mod_main.h"
|
||||||
|
|
||||||
#if defined (__FreeBSD__) || defined(__DragonFly__)
|
#if defined (__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
|
||||||
# include <sys/types.h>
|
|
||||||
# include <sys/sysctl.h>
|
|
||||||
# include <errno.h>
|
|
||||||
#elif defined (__OpenBSD__)
|
|
||||||
# include <sys/param.h>
|
|
||||||
# include <sys/sysctl.h>
|
|
||||||
# include <sys/sensors.h>
|
|
||||||
# include <errno.h>
|
|
||||||
# include <err.h>
|
|
||||||
#else
|
#else
|
||||||
// https://www.kernel.org/doc/Documentation/hwmon/sysfs-interface
|
// https://www.kernel.org/doc/Documentation/hwmon/sysfs-interface
|
||||||
typedef enum
|
typedef enum
|
||||||
|
@ -589,155 +580,6 @@ _hwmon_update(void)
|
||||||
}
|
}
|
||||||
eina_lock_release(&mons_lock);
|
eina_lock_release(&mons_lock);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__OpenBSD__)
|
|
||||||
|
|
||||||
static Eina_Lock mons_lock;
|
|
||||||
static Eina_List *mons = NULL;
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
const char *name;
|
|
||||||
const char *label;
|
|
||||||
double temp;
|
|
||||||
int mib[5];
|
|
||||||
} Temp;
|
|
||||||
|
|
||||||
static void
|
|
||||||
_sysctl_init(void)
|
|
||||||
{
|
|
||||||
int dev, numt;
|
|
||||||
struct sensordev snsrdev;
|
|
||||||
struct sensor snsr;
|
|
||||||
size_t sdlen = sizeof(snsrdev);
|
|
||||||
size_t slen = sizeof(snsr);
|
|
||||||
int mib[5] = { CTL_HW, HW_SENSORS, 0, 0, 0 };
|
|
||||||
|
|
||||||
for (dev = 0;; dev++)
|
|
||||||
{
|
|
||||||
mib[2] = dev;
|
|
||||||
if (sysctl(mib, 3, &snsrdev, &sdlen, NULL, 0) == -1)
|
|
||||||
{
|
|
||||||
if (errno == ENOENT) /* no further sensors */
|
|
||||||
break;
|
|
||||||
else
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
for (numt = 0; numt < snsrdev.maxnumt[SENSOR_TEMP]; numt++)
|
|
||||||
{
|
|
||||||
mib[4] = numt;
|
|
||||||
slen = sizeof(snsr);
|
|
||||||
if (sysctl(mib, 5, &snsr, &slen, NULL, 0) == -1)
|
|
||||||
continue;
|
|
||||||
if (slen > 0 && (snsr.flags & SENSOR_FINVALID) == 0)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
slen = sizeof(snsr);
|
|
||||||
if (sysctl(mib, 5, &snsr, &slen, NULL, 0) == -1)
|
|
||||||
continue;
|
|
||||||
if (snsr.type != SENSOR_TEMP) continue;
|
|
||||||
|
|
||||||
Temp *temp = malloc(sizeof(Temp));
|
|
||||||
temp->name = eina_stringshare_add(snsrdev.xname);
|
|
||||||
temp->label = eina_stringshare_add(snsrdev.xname);
|
|
||||||
memcpy(temp->mib, &mib, sizeof(mib));
|
|
||||||
mons = eina_list_append(mons, temp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_sysctl_update(void)
|
|
||||||
{
|
|
||||||
Eina_List *l;
|
|
||||||
Temp *temp;
|
|
||||||
struct sensor snsr;
|
|
||||||
size_t slen = sizeof(struct sensor);
|
|
||||||
|
|
||||||
eina_lock_take(&mons_lock);
|
|
||||||
EINA_LIST_FOREACH(mons, l, temp)
|
|
||||||
{
|
|
||||||
if (sysctl(temp->mib, 5, &snsr, &slen, NULL, 0) != -1)
|
|
||||||
temp->temp = (snsr.value - 273150000) / 1000000.0;
|
|
||||||
}
|
|
||||||
eina_lock_release(&mons_lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
#elif defined(__FreeBSD__) || defined(__DragonFly__)
|
|
||||||
|
|
||||||
static Eina_Lock mons_lock;
|
|
||||||
static Eina_List *mons = NULL;
|
|
||||||
|
|
||||||
static const char *sources[] =
|
|
||||||
{
|
|
||||||
"hw.acpi.thermal.tz0.temperature",
|
|
||||||
"dev.aibs.0.temp.0",
|
|
||||||
"dev.lm75.0.temperature",
|
|
||||||
NULL
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
const char *name;
|
|
||||||
const char *label;
|
|
||||||
double temp;
|
|
||||||
int mib[CTL_MAXNAME];
|
|
||||||
unsigned int miblen;
|
|
||||||
} Temp;
|
|
||||||
|
|
||||||
static void
|
|
||||||
_sysctl_init(void)
|
|
||||||
{
|
|
||||||
size_t len;
|
|
||||||
int mib[CTL_MAXNAME];
|
|
||||||
char buf[128];
|
|
||||||
|
|
||||||
for (int i = 0; sources[i] != NULL; i++)
|
|
||||||
{
|
|
||||||
len = 4;
|
|
||||||
if (sysctlnametomib(sources[i], mib, &len) != -1)
|
|
||||||
{
|
|
||||||
Temp *temp = malloc(sizeof(Temp));
|
|
||||||
temp->name = eina_stringshare_add(sources[i]);
|
|
||||||
temp->label = eina_stringshare_add(sources[i]);
|
|
||||||
memcpy(temp->mib, &mib, sizeof(mib));
|
|
||||||
temp->miblen = len;
|
|
||||||
mons = eina_list_append(mons, temp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for (int i = 0; i < 256; i++)
|
|
||||||
{
|
|
||||||
len = 4;
|
|
||||||
snprintf(buf, sizeof(buf), "dev.cpu.%i.temperature", i);
|
|
||||||
if (sysctlnametomib(buf, mib, &len) == -1) break;
|
|
||||||
|
|
||||||
Temp *temp = malloc(sizeof(Temp));
|
|
||||||
temp->name = eina_stringshare_add(buf);
|
|
||||||
temp->label = eina_stringshare_add(buf);
|
|
||||||
memcpy(temp->mib, &mib, sizeof(mib));
|
|
||||||
temp->miblen = len;
|
|
||||||
mons = eina_list_append(mons, temp);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
|
||||||
_sysctl_update(void)
|
|
||||||
{
|
|
||||||
Eina_List *l;
|
|
||||||
Temp *temp;
|
|
||||||
int val;
|
|
||||||
size_t len = sizeof(val);
|
|
||||||
|
|
||||||
eina_lock_take(&mons_lock);
|
|
||||||
EINA_LIST_FOREACH(mons, l, temp)
|
|
||||||
{
|
|
||||||
if (sysctl(temp->mib, temp->miblen, &val, &len, NULL, 0) != -1)
|
|
||||||
temp->temp = (val - 2732) / 10;
|
|
||||||
}
|
|
||||||
eina_lock_release(&mons_lock);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
init(Tempthread *tth)
|
init(Tempthread *tth)
|
||||||
|
@ -748,21 +590,6 @@ init(Tempthread *tth)
|
||||||
if (((!tth->sensor_name) || (tth->sensor_name[0] == 0)))
|
if (((!tth->sensor_name) || (tth->sensor_name[0] == 0)))
|
||||||
{
|
{
|
||||||
eina_stringshare_replace(&(tth->sensor_name), NULL);
|
eina_stringshare_replace(&(tth->sensor_name), NULL);
|
||||||
#if defined (__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
|
|
||||||
if (!tth->sensor_name)
|
|
||||||
{
|
|
||||||
Eina_List *l;
|
|
||||||
Temp *temp;
|
|
||||||
|
|
||||||
eina_lock_take(&mons_lock);
|
|
||||||
EINA_LIST_FOREACH(mons, l, temp)
|
|
||||||
{
|
|
||||||
tth->sensor_name = eina_stringshare_add(temp->name);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
eina_lock_release(&mons_lock);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
if (!tth->sensor_name)
|
if (!tth->sensor_name)
|
||||||
{
|
{
|
||||||
Eina_List *l, *ll;
|
Eina_List *l, *ll;
|
||||||
|
@ -780,35 +607,15 @@ init(Tempthread *tth)
|
||||||
}
|
}
|
||||||
eina_lock_release(&mons_lock);
|
eina_lock_release(&mons_lock);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
// we couldn't find the sensor - so init failed - try again next time
|
||||||
|
if (((!tth->sensor_name) || (tth->sensor_name[0] == 0)))
|
||||||
|
tth->initted = EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
check(Tempthread *tth)
|
check(Tempthread *tth)
|
||||||
{
|
{
|
||||||
#if defined (__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
|
|
||||||
Eina_List *l;
|
|
||||||
Temp *temp;
|
|
||||||
|
|
||||||
_sysctl_update();
|
|
||||||
|
|
||||||
if (!tth->sensor_name) return -999;
|
|
||||||
|
|
||||||
double t = 0.0;
|
|
||||||
|
|
||||||
eina_lock_take(&mons_lock);
|
|
||||||
EINA_LIST_FOREACH(mons, l, temp)
|
|
||||||
{
|
|
||||||
if (!strcmp(tth->sensor_name, temp->name))
|
|
||||||
{
|
|
||||||
t = temp->temp;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
eina_lock_release(&mons_lock);
|
|
||||||
return t;
|
|
||||||
#else
|
|
||||||
Eina_List *l, *ll;
|
Eina_List *l, *ll;
|
||||||
Mon *mon;
|
Mon *mon;
|
||||||
Temp *temp;
|
Temp *temp;
|
||||||
|
@ -833,7 +640,6 @@ check(Tempthread *tth)
|
||||||
eina_lock_release(&mons_lock);
|
eina_lock_release(&mons_lock);
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
return -999;
|
return -999;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -847,20 +653,6 @@ temperature_tempget_get(Tempthread *tth)
|
||||||
Eina_List *
|
Eina_List *
|
||||||
temperature_tempget_sensor_list(void)
|
temperature_tempget_sensor_list(void)
|
||||||
{
|
{
|
||||||
#if defined (__FreeBSD__) || defined(__DragonFly__) || defined (__OpenBSD__)
|
|
||||||
Eina_List *sensors = NULL, *l;
|
|
||||||
Sensor *sen;
|
|
||||||
Temp *temp;
|
|
||||||
|
|
||||||
EINA_LIST_FOREACH(mons, l, temp)
|
|
||||||
{
|
|
||||||
sen = calloc(1, sizeof(Sensor));
|
|
||||||
sen->name = eina_stringshare_add(temp->name);
|
|
||||||
sen->label = eina_stringshare_add(temp->label);
|
|
||||||
sensors = eina_list_append(sensors, sen);
|
|
||||||
}
|
|
||||||
return sensors;
|
|
||||||
#else
|
|
||||||
Eina_List *sensors = NULL, *l, *ll;
|
Eina_List *sensors = NULL, *l, *ll;
|
||||||
Sensor *sen;
|
Sensor *sen;
|
||||||
Mon *mon;
|
Mon *mon;
|
||||||
|
@ -881,39 +673,18 @@ temperature_tempget_sensor_list(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return sensors;
|
return sensors;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
temperature_tempget_setup(void)
|
temperature_tempget_setup(void)
|
||||||
{
|
{
|
||||||
#if defined (__FreeBSD__) || defined(__DragonFly__) || defined (__OpenBSD__)
|
|
||||||
eina_lock_new(&mons_lock);
|
|
||||||
_sysctl_init();
|
|
||||||
#else
|
|
||||||
eina_lock_new(&mons_lock);
|
eina_lock_new(&mons_lock);
|
||||||
_hwmon_init();
|
_hwmon_init();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
temperature_tempget_clear(void)
|
temperature_tempget_clear(void)
|
||||||
{
|
{
|
||||||
#if defined (__FreeBSD__) || defined(__DragonFly__) || defined (__OpenBSD__)
|
|
||||||
Temp *temp;
|
|
||||||
eina_lock_take(&mons_lock);
|
|
||||||
EINA_LIST_FREE(mons, temp)
|
|
||||||
{
|
|
||||||
eina_stringshare_replace(&(temp->name), NULL);
|
|
||||||
eina_stringshare_replace(&(temp->label), NULL);
|
|
||||||
free(temp);
|
|
||||||
}
|
|
||||||
eina_lock_release(&mons_lock);
|
|
||||||
// extra lock take to cover race cond for thread
|
|
||||||
eina_lock_take(&mons_lock);
|
|
||||||
eina_lock_release(&mons_lock);
|
|
||||||
eina_lock_free(&mons_lock);
|
|
||||||
#else
|
|
||||||
Mon *mon;
|
Mon *mon;
|
||||||
Temp *temp;
|
Temp *temp;
|
||||||
Fan *fan;
|
Fan *fan;
|
||||||
|
@ -1003,5 +774,5 @@ temperature_tempget_clear(void)
|
||||||
eina_lock_take(&mons_lock);
|
eina_lock_take(&mons_lock);
|
||||||
eina_lock_release(&mons_lock);
|
eina_lock_release(&mons_lock);
|
||||||
eina_lock_free(&mons_lock);
|
eina_lock_free(&mons_lock);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -0,0 +1,254 @@
|
||||||
|
#include "e.h"
|
||||||
|
#include "e_mod_main.h"
|
||||||
|
|
||||||
|
#if defined (__FreeBSD__) || defined(__DragonFly__) || defined (__OpenBSD__)
|
||||||
|
static Eina_Lock mons_lock;
|
||||||
|
static Eina_List *mons = NULL;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (__FreeBSD__) || defined(__DragonFly__)
|
||||||
|
# include <sys/types.h>
|
||||||
|
# include <sys/sysctl.h>
|
||||||
|
# include <errno.h>
|
||||||
|
static const char *sources[] =
|
||||||
|
{
|
||||||
|
"hw.acpi.thermal.tz0.temperature",
|
||||||
|
"dev.aibs.0.temp.0",
|
||||||
|
"dev.lm75.0.temperature",
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
const char *name;
|
||||||
|
const char *label;
|
||||||
|
double temp;
|
||||||
|
int mib[CTL_MAXNAME];
|
||||||
|
unsigned int miblen;
|
||||||
|
} Temp;
|
||||||
|
|
||||||
|
static void
|
||||||
|
_sysctl_init(void)
|
||||||
|
{
|
||||||
|
size_t len;
|
||||||
|
int mib[CTL_MAXNAME];
|
||||||
|
char buf[128];
|
||||||
|
|
||||||
|
for (int i = 0; sources[i] != NULL; i++)
|
||||||
|
{
|
||||||
|
len = 4;
|
||||||
|
if (sysctlnametomib(sources[i], mib, &len) != -1)
|
||||||
|
{
|
||||||
|
Temp *temp = malloc(sizeof(Temp));
|
||||||
|
temp->name = eina_stringshare_add(sources[i]);
|
||||||
|
temp->label = eina_stringshare_add(sources[i]);
|
||||||
|
memcpy(temp->mib, &mib, sizeof(mib));
|
||||||
|
temp->miblen = len;
|
||||||
|
mons = eina_list_append(mons, temp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (int i = 0; i < 256; i++)
|
||||||
|
{
|
||||||
|
len = 4;
|
||||||
|
snprintf(buf, sizeof(buf), "dev.cpu.%i.temperature", i);
|
||||||
|
if (sysctlnametomib(buf, mib, &len) == -1) break;
|
||||||
|
|
||||||
|
Temp *temp = malloc(sizeof(Temp));
|
||||||
|
temp->name = eina_stringshare_add(buf);
|
||||||
|
temp->label = eina_stringshare_add(buf);
|
||||||
|
memcpy(temp->mib, &mib, sizeof(mib));
|
||||||
|
temp->miblen = len;
|
||||||
|
mons = eina_list_append(mons, temp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_sysctl_update(void)
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
Temp *temp;
|
||||||
|
int val;
|
||||||
|
size_t len = sizeof(val);
|
||||||
|
|
||||||
|
eina_lock_take(&mons_lock);
|
||||||
|
EINA_LIST_FOREACH(mons, l, temp)
|
||||||
|
{
|
||||||
|
if (sysctl(temp->mib, temp->miblen, &val, &len, NULL, 0) != -1)
|
||||||
|
temp->temp = (val - 2732) / 10;
|
||||||
|
}
|
||||||
|
eina_lock_release(&mons_lock);
|
||||||
|
}
|
||||||
|
|
||||||
|
#elif defined (__OpenBSD__)
|
||||||
|
# include <sys/param.h>
|
||||||
|
# include <sys/sysctl.h>
|
||||||
|
# include <sys/sensors.h>
|
||||||
|
# include <errno.h>
|
||||||
|
# include <err.h>
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
const char *name;
|
||||||
|
const char *label;
|
||||||
|
double temp;
|
||||||
|
int mib[5];
|
||||||
|
} Temp;
|
||||||
|
|
||||||
|
static void
|
||||||
|
_sysctl_init(void)
|
||||||
|
{
|
||||||
|
int dev, numt;
|
||||||
|
struct sensordev snsrdev;
|
||||||
|
struct sensor snsr;
|
||||||
|
size_t sdlen = sizeof(snsrdev);
|
||||||
|
size_t slen = sizeof(snsr);
|
||||||
|
int mib[5] = { CTL_HW, HW_SENSORS, 0, 0, 0 };
|
||||||
|
|
||||||
|
for (dev = 0;; dev++)
|
||||||
|
{
|
||||||
|
mib[2] = dev;
|
||||||
|
if (sysctl(mib, 3, &snsrdev, &sdlen, NULL, 0) == -1)
|
||||||
|
{
|
||||||
|
if (errno == ENOENT) /* no further sensors */
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for (numt = 0; numt < snsrdev.maxnumt[SENSOR_TEMP]; numt++)
|
||||||
|
{
|
||||||
|
mib[4] = numt;
|
||||||
|
slen = sizeof(snsr);
|
||||||
|
if (sysctl(mib, 5, &snsr, &slen, NULL, 0) == -1)
|
||||||
|
continue;
|
||||||
|
if (slen > 0 && (snsr.flags & SENSOR_FINVALID) == 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
slen = sizeof(snsr);
|
||||||
|
if (sysctl(mib, 5, &snsr, &slen, NULL, 0) == -1)
|
||||||
|
continue;
|
||||||
|
if (snsr.type != SENSOR_TEMP) continue;
|
||||||
|
|
||||||
|
Temp *temp = malloc(sizeof(Temp));
|
||||||
|
temp->name = eina_stringshare_add(snsrdev.xname);
|
||||||
|
temp->label = eina_stringshare_add(snsrdev.xname);
|
||||||
|
memcpy(temp->mib, &mib, sizeof(mib));
|
||||||
|
mons = eina_list_append(mons, temp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_sysctl_update(void)
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
Temp *temp;
|
||||||
|
struct sensor snsr;
|
||||||
|
size_t slen = sizeof(struct sensor);
|
||||||
|
|
||||||
|
eina_lock_take(&mons_lock);
|
||||||
|
EINA_LIST_FOREACH(mons, l, temp)
|
||||||
|
{
|
||||||
|
if (sysctl(temp->mib, 5, &snsr, &slen, NULL, 0) != -1)
|
||||||
|
temp->temp = (snsr.value - 273150000) / 1000000.0;
|
||||||
|
}
|
||||||
|
eina_lock_release(&mons_lock);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined (__FreeBSD__) || defined(__DragonFly__) || defined (__OpenBSD__)
|
||||||
|
static void
|
||||||
|
init(Tempthread *tth)
|
||||||
|
{
|
||||||
|
if (tth->initted) return;
|
||||||
|
tth->initted = EINA_TRUE;
|
||||||
|
|
||||||
|
if (((!tth->sensor_name) || (tth->sensor_name[0] == 0)))
|
||||||
|
{
|
||||||
|
eina_stringshare_replace(&(tth->sensor_name), NULL);
|
||||||
|
if (!tth->sensor_name)
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
Temp *temp;
|
||||||
|
|
||||||
|
eina_lock_take(&mons_lock);
|
||||||
|
EINA_LIST_FOREACH(mons, l, temp)
|
||||||
|
{
|
||||||
|
tth->sensor_name = eina_stringshare_add(temp->name);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
eina_lock_release(&mons_lock);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
check(Tempthread *tth)
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
Temp *temp;
|
||||||
|
double t = 0.0;
|
||||||
|
|
||||||
|
_sysctl_update();
|
||||||
|
if (!tth->sensor_name) return -999;
|
||||||
|
|
||||||
|
eina_lock_take(&mons_lock);
|
||||||
|
EINA_LIST_FOREACH(mons, l, temp)
|
||||||
|
{
|
||||||
|
if (!strcmp(tth->sensor_name, temp->name))
|
||||||
|
{
|
||||||
|
t = temp->temp;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
eina_lock_release(&mons_lock);
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
temperature_tempget_get(Tempthread *tth)
|
||||||
|
{
|
||||||
|
init(tth);
|
||||||
|
return check(tth);
|
||||||
|
}
|
||||||
|
|
||||||
|
Eina_List *
|
||||||
|
temperature_tempget_sensor_list(void)
|
||||||
|
{
|
||||||
|
Eina_List *sensors = NULL, *l;
|
||||||
|
Sensor *sen;
|
||||||
|
Temp *temp;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(mons, l, temp)
|
||||||
|
{
|
||||||
|
sen = calloc(1, sizeof(Sensor));
|
||||||
|
sen->name = eina_stringshare_add(temp->name);
|
||||||
|
sen->label = eina_stringshare_add(temp->label);
|
||||||
|
sensors = eina_list_append(sensors, sen);
|
||||||
|
}
|
||||||
|
return sensors;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
temperature_tempget_setup(void)
|
||||||
|
{
|
||||||
|
eina_lock_new(&mons_lock);
|
||||||
|
_sysctl_init();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
temperature_tempget_clear(void)
|
||||||
|
{
|
||||||
|
Temp *temp;
|
||||||
|
|
||||||
|
eina_lock_take(&mons_lock);
|
||||||
|
EINA_LIST_FREE(mons, temp)
|
||||||
|
{
|
||||||
|
eina_stringshare_replace(&(temp->name), NULL);
|
||||||
|
eina_stringshare_replace(&(temp->label), NULL);
|
||||||
|
free(temp);
|
||||||
|
}
|
||||||
|
eina_lock_release(&mons_lock);
|
||||||
|
// extra lock take to cover race cond for thread
|
||||||
|
eina_lock_take(&mons_lock);
|
||||||
|
eina_lock_release(&mons_lock);
|
||||||
|
eina_lock_free(&mons_lock);
|
||||||
|
}
|
||||||
|
#endif
|
|
@ -2,5 +2,6 @@ src = files(
|
||||||
'e_mod_main.c',
|
'e_mod_main.c',
|
||||||
'e_mod_config.c',
|
'e_mod_config.c',
|
||||||
'e_mod_tempget.c',
|
'e_mod_tempget.c',
|
||||||
|
'e_mod_tempget_bsd.c',
|
||||||
'e_mod_main.h'
|
'e_mod_main.h'
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue