Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 26 Feb 2008 23:35:58 GMT
From:      Benjain Close <benjsc@FreeBSD.org>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   misc/121133: [patch] systils/wmbluecpu : Fix broken port under 8, take maintainership
Message-ID:  <200802262335.m1QNZw1Z054660@www.freebsd.org>
Resent-Message-ID: <200802262340.m1QNe2at048222@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         121133
>Category:       misc
>Synopsis:       [patch] systils/wmbluecpu : Fix broken port under 8, take maintainership
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Feb 26 23:40:02 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator:     Benjain Close
>Release:        FreeBSD 8.0-Current
>Organization:
ClearChain
>Environment:
FreeBSD wolf.clearchain.com 8.0-CURRENT FreeBSD 8.0-CURRENT #1: Fri Dec 14 14:23:25 CST 2007     root@wolf.clearchain.com:/usr/src-local/sys/amd64/compile/GENERIC  amd64
>Description:
sysutils/wmbluecpu builds under 8.0-Current but exits as soon as run. It fails due to a legacy kvm call being changed. (8.0 uses a sysctl, before used a kvm call).

The attached patch fixes this and *should* be backward compatible under 7 and below (I've no 7 or less boxes to test on).

I'm also happy to take maintainership of this port.

Please not however, I've only a src commit bit.
>How-To-Repeat:
Run wmbluecpu on 8.0-Current
>Fix:
Apply attached patch

Patch attached with submission follows:

Index: Makefile
===================================================================
RCS file: /devel/FreeBSD/ncvs/ports/sysutils/wmbluecpu/Makefile,v
retrieving revision 1.5
diff -u -r1.5 Makefile
--- Makefile	19 May 2007 20:23:36 -0000	1.5
+++ Makefile	26 Feb 2008 23:32:34 -0000
@@ -7,12 +7,12 @@
 
 PORTNAME=	wmbluecpu
 PORTVERSION=	0.4
-PORTREVISION=	1
+PORTREVISION=	2
 CATEGORIES=	sysutils windowmaker
 MASTER_SITES=	${MASTER_SITE_SUNSITE}
 MASTER_SITE_SUBDIR=	X11/xutils
 
-MAINTAINER=	ports@FreeBSD.org
+MAINTAINER=	benjsc@FreeBSD.org
 COMMENT=	A CPU monitoring dockapp
 
 USE_BZIP2=	yes
Index: files/cpu_freebsd.c
===================================================================
RCS file: /devel/FreeBSD/ncvs/ports/sysutils/wmbluecpu/files/cpu_freebsd.c,v
retrieving revision 1.2
diff -u -r1.2 cpu_freebsd.c
--- files/cpu_freebsd.c	10 Apr 2003 09:46:22 -0000	1.2
+++ files/cpu_freebsd.c	26 Feb 2008 23:31:59 -0000
@@ -35,23 +35,17 @@
 #include <unistd.h>
 
 static kvm_t *kd;
-static struct nlist nlst[] = { {"_cp_time"}, {0} };
+static int	cp_time_mib[2];
+static struct nlist	nlst[] = {
+	{"_cp_time"}, {0}};
 
 void
 cpu_init(void)
 {
-	if (!(kd = kvm_open(NULL, NULL, NULL, O_RDONLY, "kvm_open")))
-	{
-		perror("kvm_open");
-		exit(1);
-	}
-
-	kvm_nlist(kd, nlst);
-
-	if (!nlst[0].n_type)
-	{
-		perror("kvm_nlist");
-		exit(1);
+	size_t len = 2;
+	sysctlnametomib("kern.cp_time", cp_time_mib, &len);
+	if((kd = kvm_open(NULL, NULL, NULL, O_RDONLY, "kvm_open")) != NULL ){
+		kvm_nlist(kd, nlst);
 	}
 
 	seteuid(getuid());
@@ -73,13 +67,23 @@
 void cpu_getusage()
 {
 	long cpu, nice, system, idle, used, total;
-	long cpu_time[CPUSTATES];
+	long cpu_time[CPUSTATES], cpu_time_len=sizeof(cpu_time);
+	int error;
 
-	if (kvm_read(kd, nlst[0].n_value, &cpu_time, sizeof(cpu_time))
+	if( cp_time_mib[0] != 0 ){
+	    error =  sysctl(cp_time_mib, 2, cpu_time, &cpu_time_len, NULL, 0 );
+	    if ( error ){
+		perror("sysctl, cpu_time_mib");
+		exit(1);
+	    }
+	}
+	else {
+	    if (kvm_read(kd, nlst[0].n_value, &cpu_time, sizeof(cpu_time))
 		!= sizeof(cpu_time))
-	{
+	    {
 		perror("kvm_read");
 		exit(1);
+	    }
 	}
 
 	cpu = cpu_time[CP_USER];


>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200802262335.m1QNZw1Z054660>