freebsd: thermal here sucks.

There are modules for more but it's too much. They should use a
decent API and not put things all over the place/name space.
This commit is contained in:
Alastair Poole 2020-06-16 17:29:51 +01:00
parent 7dd5077692
commit 8a5e2704e0
1 changed files with 9 additions and 10 deletions

View File

@ -38,9 +38,7 @@
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/param.h>
#if defined(__linux__)
# define BORING_USER 1
#else
#if !defined(__linux__)
# include <sys/sysctl.h>
#endif
#include <sys/ioctl.h>
@ -682,16 +680,17 @@ _sensors_thermal_get(Sys_Info *sysinfo)
sensor->value = (snsr.value - 273150000) / 1000000.0; // (uK -> C)
}
#elif defined(__FreeBSD__) || defined(__DragonFly__)
unsigned int value;
sensor_t *sensor;
int value;
size_t len = sizeof(value);
if ((sysctlbyname
("hw.acpi.thermal.tz0.temperature", &value, &len, NULL,
0)) != -1)
if ((sysctlbyname("hw.acpi.thermal.tz0.temperature", &value, &len, NULL, 0)) != -1)
{
*temperature = (value - 2732) / 10;
sensors = realloc(sensors, 1 + sysinfo->snsr_count * sizeof(sensor_t *));
sensors[sysinfo->snsr_count++] = sensor = calloc(1, sizeof(sensor_t));
sensor->name = strdup("hw.acpi.thermal.tz0");
sensor->value = (float) (value - 2732) / 10;
}
else
*temperature = INVALID_TEMP;
#elif defined(__linux__)
sensor_t *sensor;
struct dirent *dh;