summaryrefslogtreecommitdiffstats
path: root/usr.bin/systat/sensors.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.bin/systat/sensors.c')
-rw-r--r--usr.bin/systat/sensors.c261
1 files changed, 0 insertions, 261 deletions
diff --git a/usr.bin/systat/sensors.c b/usr.bin/systat/sensors.c
deleted file mode 100644
index 8af57c2..0000000
--- a/usr.bin/systat/sensors.c
+++ /dev/null
@@ -1,261 +0,0 @@
-/* $FreeBSD$ */
-/* $OpenBSD: sensors.c,v 1.12 2007/07/29 04:51:59 cnst Exp $ */
-
-/*-
- * Copyright (c) 2007 Deanna Phillips <deanna@openbsd.org>
- * Copyright (c) 2003 Henning Brauer <henning@openbsd.org>
- * Copyright (c) 2006 Constantine A. Murenin <cnst+openbsd@bugmail.mojo.ru>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- *
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/sysctl.h>
-#include <sys/sensors.h>
-
-#include <err.h>
-#include <errno.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "systat.h"
-#include "extern.h"
-
-struct sensor sensor;
-struct sensordev sensordev;
-int row, sensor_cnt;
-void printline(void);
-static char * fmttime(double);
-
-WINDOW *
-opensensors(void)
-{
- return (subwin(stdscr, LINES-3-1, 0, MAINWIN_ROW, 0));
-}
-
-void
-closesensors(WINDOW *w)
-{
- if (w == NULL)
- return;
- wclear(w);
- wrefresh(w);
- delwin(w);
-}
-
-void
-labelsensors(void)
-{
- wmove(wnd, 0, 0);
- wclrtobot(wnd);
- mvwaddstr(wnd, 0, 0, "Sensor");
- mvwaddstr(wnd, 0, 34, "Value");
- mvwaddstr(wnd, 0, 45, "Status");
- mvwaddstr(wnd, 0, 58, "Description");
-}
-
-void
-fetchsensors(void)
-{
- enum sensor_type type;
- size_t slen, sdlen;
- int mib[5], dev, numt;
-
- mib[0] = CTL_HW;
- mib[1] = HW_SENSORS;
- slen = sizeof(struct sensor);
- sdlen = sizeof(struct sensordev);
-
- row = 1;
- sensor_cnt = 0;
-
- wmove(wnd, row, 0);
- wclrtobot(wnd);
-
- for (dev = 0; dev < MAXSENSORDEVICES; dev++) {
- mib[2] = dev;
- if (sysctl(mib, 3, &sensordev, &sdlen, NULL, 0) == -1) {
- if (errno != ENOENT)
- warn("sysctl");
- continue;
- }
- for (type = 0; type < SENSOR_MAX_TYPES; type++) {
- mib[3] = type;
- for (numt = 0; numt < sensordev.maxnumt[type]; numt++) {
- mib[4] = numt;
- if (sysctl(mib, 5, &sensor, &slen, NULL, 0)
- == -1) {
- if (errno != ENOENT)
- warn("sysctl");
- continue;
- }
- if (sensor.flags & SENSOR_FINVALID)
- continue;
- sensor_cnt++;
- printline();
- }
- }
- }
-}
-
-const char *drvstat[] = {
- NULL,
- "empty", "ready", "powerup", "online", "idle", "active",
- "rebuild", "powerdown", "fail", "pfail"
-};
-
-void
-showsensors(void)
-{
- if (sensor_cnt == 0)
- mvwaddstr(wnd, row, 0, "No sensors found.");
-}
-
-int
-initsensors(void)
-{
- return (1);
-}
-
-void
-printline(void)
-{
- mvwprintw(wnd, row, 0, "%s.%s%d", sensordev.xname,
- sensor_type_s[sensor.type], sensor.numt);
- switch (sensor.type) {
- case SENSOR_TEMP:
- mvwprintw(wnd, row, 24, "%10.2f degC",
- (sensor.value - 273150000) / 1000000.0);
- break;
- case SENSOR_FANRPM:
- mvwprintw(wnd, row, 24, "%11lld RPM", sensor.value);
- break;
- case SENSOR_VOLTS_DC:
- mvwprintw(wnd, row, 24, "%10.2f V DC",
- sensor.value / 1000000.0);
- break;
- case SENSOR_AMPS:
- mvwprintw(wnd, row, 24, "%10.2f A", sensor.value / 1000000.0);
- break;
- case SENSOR_INDICATOR:
- mvwprintw(wnd, row, 24, "%15s", sensor.value? "On" : "Off");
- break;
- case SENSOR_INTEGER:
- mvwprintw(wnd, row, 24, "%11lld raw", sensor.value);
- break;
- case SENSOR_PERCENT:
- mvwprintw(wnd, row, 24, "%14.2f%%", sensor.value / 1000.0);
- break;
- case SENSOR_LUX:
- mvwprintw(wnd, row, 24, "%15.2f lx", sensor.value / 1000000.0);
- break;
- case SENSOR_DRIVE:
- if (0 < sensor.value &&
- sensor.value < sizeof(drvstat)/sizeof(drvstat[0])) {
- mvwprintw(wnd, row, 24, "%15s", drvstat[sensor.value]);
- break;
- }
- break;
- case SENSOR_TIMEDELTA:
- mvwprintw(wnd, row, 24, "%15s", fmttime(sensor.value / 1000000000.0));
- break;
- case SENSOR_WATTHOUR:
- mvwprintw(wnd, row, 24, "%12.2f Wh", sensor.value / 1000000.0);
- break;
- case SENSOR_AMPHOUR:
- mvwprintw(wnd, row, 24, "%10.2f Ah", sensor.value / 1000000.0);
- break;
- default:
- mvwprintw(wnd, row, 24, "%10lld", sensor.value);
- break;
- }
- if (sensor.desc[0] != '\0')
- mvwprintw(wnd, row, 58, "(%s)", sensor.desc);
-
- switch (sensor.status) {
- case SENSOR_S_UNSPEC:
- break;
- case SENSOR_S_UNKNOWN:
- mvwaddstr(wnd, row, 45, "unknown");
- break;
- case SENSOR_S_WARN:
- mvwaddstr(wnd, row, 45, "WARNING");
- break;
- case SENSOR_S_CRIT:
- mvwaddstr(wnd, row, 45, "CRITICAL");
- break;
- case SENSOR_S_OK:
- mvwaddstr(wnd, row, 45, "OK");
- break;
- }
- row++;
-}
-
-#define SECS_PER_DAY 86400
-#define SECS_PER_HOUR 3600
-#define SECS_PER_MIN 60
-
-static char *
-fmttime(double in)
-{
- int signbit = 1;
- int tiny = 0;
- char *unit;
-#define LEN 32
- static char outbuf[LEN];
-
- if (in < 0){
- signbit = -1;
- in *= -1;
- }
-
- if (in >= SECS_PER_DAY ){
- unit = "days";
- in /= SECS_PER_DAY;
- } else if (in >= SECS_PER_HOUR ){
- unit = "hr";
- in /= SECS_PER_HOUR;
- } else if (in >= SECS_PER_MIN ){
- unit = "min";
- in /= SECS_PER_MIN;
- } else if (in >= 1 ){
- unit = "s";
- /* in *= 1; */ /* no op */
- } else if (in == 0 ){ /* direct comparisons to floats are scary */
- unit = "s";
- } else if (in >= 1e-3 ){
- unit = "ms";
- in *= 1e3;
- } else if (in >= 1e-6 ){
- unit = "us";
- in *= 1e6;
- } else if (in >= 1e-9 ){
- unit = "ns";
- in *= 1e9;
- } else {
- unit = "ps";
- if (in < 1e-13)
- tiny = 1;
- in *= 1e12;
- }
-
- snprintf(outbuf, LEN,
- tiny ? "%s%lf %s" : "%s%.3lf %s",
- signbit == -1 ? "-" : "", in, unit);
-
- return outbuf;
-}
OpenPOWER on IntegriCloud