On Wed, Jul 16, 2008 at 04:59:04AM +0200, Dawe wrote:
> Josh Elsasser wrote:
>> I have implemented support in gkrellm for reading and displaying the
>> hw.sensors sysctls. Only sensors for temperature, fan speed, and DC
>> voltage are supported due to limitations in gkrellm.
>>
>> Comments, bugs, suggestions?
Pretty nice, works fine here @i386 with acpitz0.temp0. Inserting the
battery allows to show acpibat0.volt0/1 too, it'd be even better if it
could show acpibat0.watthour* (battery capacity), but i understand there
are limitations in gkrellm.
You forgot to bump PKGNAME btw, so here's an updated diff against
anoncvs this time. I also removed the irrelevant sysutils/gkrellm
CATEGORY, there's no point in having a category for a single package (i
shall do the same for gkrellm/plugins too btw)
Did you send it to maintainer first (i know he's off this week but i can
handle this patch) ? And most important, did you send this patch
upstream for inclusion, so we don't have to keep it for years in our
tree ?
Thanks for you work,
Landry
Index: Makefile
===================================================================
RCS file: /cvs/ports/sysutils/gkrellm/gkrellm/Makefile,v
retrieving revision 1.39
diff -u -p -r1.39 Makefile
--- Makefile 1 Jul 2008 10:17:35 -0000 1.39
+++ Makefile 16 Jul 2008 06:31:12 -0000
@@ -7,9 +7,9 @@ COMMENT-client= single process stack of
V= 2.3.1
DISTNAME= gkrellm-${V}
-PKGNAME-main= gkrellm-server-${V}p1
-PKGNAME-client= gkrellm-${V}p2
-CATEGORIES= sysutils sysutils/gkrellm
+PKGNAME-main= gkrellm-server-${V}p2
+PKGNAME-client= gkrellm-${V}p3
+CATEGORIES= sysutils
MAINTAINER= Antoine Jacoutot <[EMAIL PROTECTED]>
Index: patches/patch-src_sysdeps_openbsd_c
===================================================================
RCS file:
/cvs/ports/sysutils/gkrellm/gkrellm/patches/patch-src_sysdeps_openbsd_c,v
retrieving revision 1.9
diff -u -p -r1.9 patch-src_sysdeps_openbsd_c
--- patches/patch-src_sysdeps_openbsd_c 1 Jul 2008 10:17:35 -0000 1.9
+++ patches/patch-src_sysdeps_openbsd_c 16 Jul 2008 06:31:13 -0000
@@ -1,6 +1,6 @@
-$OpenBSD: patch-src_sysdeps_openbsd_c,v 1.9 2008/07/01 10:17:35 ajacoutot Exp $
---- src/sysdeps/openbsd.c.orig Sat Jul 7 01:54:22 2007
-+++ src/sysdeps/openbsd.c Tue Jul 1 10:48:13 2008
+$OpenBSD: patch-src_sysdeps_openbsd_c,v 1.7 2007/10/26 22:56:57 ajacoutot Exp $
+--- src/sysdeps/openbsd.c.orig Fri Jul 6 16:54:22 2007
++++ src/sysdeps/openbsd.c Sat Jul 12 09:14:03 2008
@@ -53,41 +53,71 @@ gkrellm_sys_main_cleanup(void)
#include <sys/dkstat.h>
#include <kvm.h>
@@ -93,7 +93,133 @@ $OpenBSD: patch-src_sysdeps_openbsd_c,v
/* ===================================================================== */
/* Proc monitor interface */
-@@ -293,7 +323,7 @@ gkrellm_sys_sensors_init(void)
+@@ -259,41 +289,122 @@ gkrellm_sys_mem_init(void)
+
+
+ /* ===================================================================== */
+-/* Sensor monitor interface - not implemented */
++/* Sensor monitor interface */
+
++#include <sys/param.h>
++#include <sys/sysctl.h>
++#include <sys/sensors.h>
++#include <errno.h>
++
++static gboolean
++get_sensor(int dev, int type, int num, gfloat *val)
++{
++ int mib[5] = { CTL_HW, HW_SENSORS };
++ struct sensor sen;
++ size_t len = sizeof(sen);
++
++ mib[2] = dev;
++ mib[3] = type;
++ mib[4] = num;
++ if (sysctl(mib, 5, &sen, &len, NULL, 0) == -1 ||
++ (SENSOR_FINVALID|SENSOR_FUNKNOWN) & sen.flags)
++ return FALSE;
++
++ *val = (gfloat)sen.value;
++ return TRUE;
++}
++
+ gboolean
+ gkrellm_sys_sensors_get_temperature(gchar *device_name, gint id,
+ gint iodev, gint interface, gfloat *temp)
+- {
+- return FALSE;
+- }
++{
++ return get_sensor(id, iodev, interface, temp);
++}
+
+ gboolean
+ gkrellm_sys_sensors_get_fan(gchar *device_name, gint id,
+ gint iodev, gint interface, gfloat *fan)
+- {
+- return FALSE;
+- }
++{
++ return get_sensor(id, iodev, interface, fan);
++}
+
+ gboolean
+ gkrellm_sys_sensors_get_voltage(gchar *device_name, gint id,
+ gint iodev, gint interface, gfloat *volt)
+- {
+- return FALSE;
++{
++ return get_sensor(id, iodev, interface, volt);
++}
++
++static gboolean
++add_sensdev(int dev, struct sensordev *sensdev)
++{
++ static enum sensor_type stypes[] =
++ { SENSOR_TEMP, SENSOR_FANRPM, SENSOR_VOLTS_DC };
++ static gint gtypes[] =
++ { SENSOR_TEMPERATURE, SENSOR_FAN, SENSOR_VOLTAGE };
++ static gfloat fac[] = { 0.000001, 1.0, 0.000001 };
++ static gfloat off[] = { -273.15, 0.0, 0.0 };
++ char name[32];
++ int mib[5] = { CTL_HW, HW_SENSORS };
++ struct sensor sen;
++ size_t len = sizeof(sen);
++ int idx, num;
++ gboolean found = FALSE;
++
++ mib[2] = dev;
++ for (idx = 0; sizeof(stypes) / sizeof(stypes[0]) > idx; idx++) {
++ mib[3] = stypes[idx];
++ for (num = 0; sensdev->maxnumt[stypes[idx]] > num; num++) {
++ mib[4] = num;
++ len = sizeof(sen);
++ if (sysctl(mib, 5, &sen, &len, NULL, 0) == -1) {
++ if (ENOENT != errno)
++ return FALSE;
++ continue;
++ }
++ if (SENSOR_FINVALID & sen.flags)
++ continue;
++ snprintf(name, sizeof(name), "%s.%s%d", sensdev->xname,
++ sensor_type_s[stypes[idx]], num);
++ gkrellm_sensors_add_sensor(gtypes[idx], NULL, name,
++ sensdev->num, stypes[idx], num, fac[idx],
++ off[idx], NULL, (sen.desc[0] ? sen.desc : NULL));
++ found = TRUE;
++ }
+ }
+
++ return found;
++}
++
+ gboolean
+ gkrellm_sys_sensors_init(void)
+- {
+- return FALSE;
++{
++ int mib[3] = { CTL_HW, HW_SENSORS };
++ struct sensordev sensdev;
++ size_t len = sizeof(sensdev);
++ int dev;
++ gboolean found = FALSE;
++
++ for (dev = 0; MAXSENSORDEVICES > dev; dev++) {
++ mib[2] = dev;
++ if (sysctl(mib, 3, &sensdev, &len, NULL, 0) == -1) {
++ if (ENOENT != errno)
++ return FALSE;
++ continue;
++ }
++ if (add_sensdev(dev, &sensdev))
++ found = TRUE;
+ }
+
++ return found;
++}
+
++
+ /* ===================================================================== */
/* Battery monitor interface */
#include <sys/ioctl.h>
@@ -102,7 +228,7 @@ $OpenBSD: patch-src_sysdeps_openbsd_c,v
#include <machine/apmvar.h>
#define APMDEV "/dev/apm"
-@@ -405,7 +435,7 @@ gkrellm_sys_disk_read_data(void)
+@@ -405,7 +516,7 @@ gkrellm_sys_disk_read_data(void)
/* Separate read/write stats were implemented in NetBSD 1.6K.
*/
@@ -111,7 +237,7 @@ $OpenBSD: patch-src_sysdeps_openbsd_c,v
rbytes = d.dk_rbytes;
wbytes = d.dk_wbytes;
#else
-@@ -413,7 +443,7 @@ gkrellm_sys_disk_read_data(void)
+@@ -413,7 +524,7 @@ gkrellm_sys_disk_read_data(void)
wbytes = 0;
#endif
Index: pkg/PLIST-main
===================================================================
RCS file: /cvs/ports/sysutils/gkrellm/gkrellm/pkg/PLIST-main,v
retrieving revision 1.1
diff -u -p -r1.1 PLIST-main
--- pkg/PLIST-main 25 Nov 2006 20:12:10 -0000 1.1
+++ pkg/PLIST-main 16 Jul 2008 06:31:13 -0000
@@ -1,7 +1,6 @@
@comment $OpenBSD: PLIST-main,v 1.1 2006/11/25 20:12:10 espie Exp $
@pkgpath sysutils/gkrellm/gkrellm
@pkgpath sysutils/gkrellm/gkrellm,no_client
-include/gkrellm2/
include/gkrellm2/gkrellmd.h
@man man/man1/gkrellmd.1
@mode 2755