forked from enlightenment/evisum
openbsd: fix for non-acpi batteries
This commit is contained in:
parent
09e8249689
commit
d1d4d0fb9e
|
@ -86,7 +86,10 @@ void
|
||||||
system_info_all_free(Sys_Info *);
|
system_info_all_free(Sys_Info *);
|
||||||
|
|
||||||
int
|
int
|
||||||
system_cpu_online_count_get();
|
system_cpu_online_count_get(void);
|
||||||
|
|
||||||
|
int
|
||||||
|
system_cpu_count_get(void);
|
||||||
|
|
||||||
cpu_core_t **
|
cpu_core_t **
|
||||||
system_cpu_usage_get(int *ncpu);
|
system_cpu_usage_get(int *ncpu);
|
||||||
|
|
|
@ -60,6 +60,12 @@ cpu_count(void)
|
||||||
return cores;
|
return cores;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
system_cpu_count_get(void)
|
||||||
|
{
|
||||||
|
return cpu_count();
|
||||||
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
system_cpu_online_count_get(void)
|
system_cpu_online_count_get(void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -118,12 +118,15 @@ _power_battery_count_get(power_t *power)
|
||||||
{
|
{
|
||||||
#if defined(__OpenBSD__)
|
#if defined(__OpenBSD__)
|
||||||
struct sensordev snsrdev;
|
struct sensordev snsrdev;
|
||||||
|
struct sensor snsr;
|
||||||
|
size_t slen = sizeof(struct sensor);
|
||||||
size_t sdlen = sizeof(struct sensordev);
|
size_t sdlen = sizeof(struct sensordev);
|
||||||
int mib[5] = { CTL_HW, HW_SENSORS, 0, 0, 0 };
|
int mibs[5] = { CTL_HW, HW_SENSORS, 0, 0, 0 };
|
||||||
int i, devn, id;
|
int i, devn;
|
||||||
|
|
||||||
for (devn = 0;; devn++) {
|
for (devn = 0;; devn++) {
|
||||||
mib[2] = devn;
|
mibs[2] = devn;
|
||||||
if (sysctl(mib, 3, &snsrdev, &sdlen, NULL, 0) == -1)
|
if (sysctl(mibs, 3, &snsrdev, &sdlen, NULL, 0) == -1)
|
||||||
{
|
{
|
||||||
if (errno == ENXIO)
|
if (errno == ENXIO)
|
||||||
continue;
|
continue;
|
||||||
|
@ -131,31 +134,40 @@ _power_battery_count_get(power_t *power)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < 10; i++) {
|
for (int n = 0; n < snsrdev.maxnumt[SENSOR_WATTHOUR]; n++) {
|
||||||
char buf[64];
|
mibs[4] = n;
|
||||||
snprintf(buf, sizeof(buf), "acpibat%d", i);
|
|
||||||
if (!strcmp(buf, snsrdev.xname))
|
if (sysctl(mibs, 5, &snsr, &slen, NULL, 0) == -1)
|
||||||
{
|
continue;
|
||||||
id = power->battery_count;
|
|
||||||
power->batteries = realloc(power->batteries, 1 +
|
if (slen > 0 && (snsr.flags & SENSOR_FINVALID) == 0)
|
||||||
power->battery_count * sizeof(bat_t **));
|
break;
|
||||||
power->batteries[id] = calloc(1, sizeof(bat_t));
|
}
|
||||||
power->batteries[id]->name = strdup(buf);
|
|
||||||
power->batteries[id]->present = true;
|
if (sysctl(mibs, 5, &snsr, &slen, NULL, 0) == -1)
|
||||||
power->batteries[id]->mibs = malloc(sizeof(int) * 5);
|
continue;
|
||||||
int *tmp = power->batteries[id]->mibs;
|
|
||||||
tmp[0] = mib[0];
|
if ((snsr.type == SENSOR_AMPHOUR) || (snsr.type == SENSOR_WATTHOUR))
|
||||||
tmp[1] = mib[1];
|
{
|
||||||
tmp[2] = mib[2];
|
i = power->battery_count;
|
||||||
power->battery_count++;
|
power->batteries = realloc(power->batteries, 1 +
|
||||||
}
|
power->battery_count++ * sizeof(bat_t **));
|
||||||
|
power->batteries[i] = calloc(1, sizeof(bat_t));
|
||||||
|
power->batteries[i]->name = strdup(snsrdev.xname);
|
||||||
|
power->batteries[i]->present = true;
|
||||||
|
power->batteries[i]->mibs = malloc(sizeof(int) * 5);
|
||||||
|
|
||||||
|
int *tmp = power->batteries[i]->mibs;
|
||||||
|
tmp[0] = mibs[0];
|
||||||
|
tmp[1] = mibs[1];
|
||||||
|
tmp[2] = mibs[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp("acpiac0", snsrdev.xname))
|
if (!strcmp("acpiac0", snsrdev.xname))
|
||||||
{
|
{
|
||||||
power->ac_mibs[0] = mib[0];
|
power->ac_mibs[0] = mibs[0];
|
||||||
power->ac_mibs[1] = mib[1];
|
power->ac_mibs[1] = mibs[1];
|
||||||
power->ac_mibs[2] = mib[2];
|
power->ac_mibs[2] = mibs[2];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#elif defined(__FreeBSD__) || defined(__DragonFly__)
|
#elif defined(__FreeBSD__) || defined(__DragonFly__)
|
||||||
|
|
Loading…
Reference in New Issue