Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 3 Aug 1999 18:38:30 -0700
From:      Arun Sharma <adsharma@home.com>
To:        William Woods <wwoods@cybcon.com>
Cc:        freebsd-smp@FreeBSD.ORG
Subject:   Re: xosview and SMP
Message-ID:  <19990803183830.A28346@home.com>
In-Reply-To: <XFMail.990803161425.wwoods@cybcon.com>; from William Woods on Tue, Aug 03, 1999 at 04:14:25PM -0700
References:  <19990803005719.A25911@home.com> <XFMail.990803161425.wwoods@cybcon.com>

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

--FCuugMFkClbJLl1L
Content-Type: text/plain; charset=us-ascii

On Tue, Aug 03, 1999 at 04:14:25PM -0700, William Woods wrote:

> Hmmmmmare you saying the meters now display BOTH CPUs? If so, could
> you infiorm me as to what you did? I would like to have both CPU's
> useage displayed.

It shows as many CPUs as there are on the system, but all of them show
the same information - because I don't see a way of getting per CPU
usage info from the FreeBSD kernel.

If you want to give it a try, use the attached patch.

	-Arun


--FCuugMFkClbJLl1L
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=xosview-bsd-patch

--- MeterMaker.cc	Mon Jan 25 12:15:26 1999
+++ /usr/ports/sysutils/xosview.mine/work/xosview-1.7.1/bsd/MeterMaker.cc	Mon Aug  2 20:26:19 1999
@@ -44,8 +44,12 @@
     push(new LoadMeter(_xos));
 
   // Standard meters (usually added, but users could turn them off)
-  if (_xos->isResourceTrue("cpu"))
-    push(new CPUMeter(_xos));
+  if (_xos->isResourceTrue("cpu")) {
+    int cpuCount = CPUMeter::countCPUs();
+    int start = (cpuCount == 0) ? 0 : 1;
+    for (int i = start ; i <= cpuCount ; i++)
+      push(new CPUMeter(_xos, CPUMeter::cpuStr(i)));	
+  }
 
   if (_xos->isResourceTrue("mem"))
     push(new MemMeter(_xos));
--- cpumeter.cc	Sun Jan 31 12:18:49 1999
+++ /usr/ports/sysutils/xosview.mine/work/xosview-1.7.1/bsd/cpumeter.cc	Mon Aug  2 22:11:18 1999
@@ -16,6 +16,9 @@
 //
 #include <sys/dkstat.h>         //  For CPUSTATES #define.  BCG
 #include <stdlib.h>		//  For use of atoi  BCG
+#include <sys/types.h>
+#include <sys/sysctl.h>     
+#include <strstream.h>
 #include "general.h"
 #include "cpumeter.h"
 #include "kernel.h"             //  For NetBSD-specific icky kvm_ code.  BCG
@@ -23,12 +26,12 @@
 CVSID("$Id: cpumeter.cc,v 1.16 1999/01/31 20:18:49 bgrayson Exp $");
 CVSID_DOT_H(CPUMETER_H_CVSID);
 
-CPUMeter::CPUMeter( XOSView *parent )
+CPUMeter::CPUMeter( XOSView *parent, const char *cpuID)
 #ifdef XOSVIEW_FREEBSD
-: FieldMeterGraph( parent, 5, "CPU", "USR/NICE/SYS/INT/FREE" ){
+: FieldMeterGraph( parent, 5, cpuID, "USR/NICE/SYS/INT/FREE" ){
 #define FREE_INDEX 4
 #else
-: FieldMeterGraph( parent, 4, "CPU", "USR/NICE/SYS/FREE" ){
+: FieldMeterGraph( parent, 4, cpuID, "USR/NICE/SYS/FREE" ){
 #define FREE_INDEX 3
 #endif
   for ( int i = 0 ; i < 2 ; i++ )
@@ -124,3 +127,31 @@
 
   cpuindex_ = (cpuindex_ + 1) % 2;
 }
+
+
+int CPUMeter::countCPUs(void)
+{
+  int mib[2], ncpu;
+  size_t len;  
+
+  mib[0] = CTL_HW;
+  mib[1] = HW_NCPU; 
+  len = sizeof(ncpu); 
+  sysctl(mib, 2, &ncpu, &len, NULL, 0);
+
+  return ncpu;
+}
+
+const char *CPUMeter::cpuStr(int num)
+{
+  static char buffer[32];
+  ostrstream str(buffer, 32);
+  
+  str << "cpu";
+  if (num != 0)
+    str << (num - 1);
+  str << ends;
+
+  return buffer;
+}
+
--- cpumeter.h	Tue Oct 20 12:37:33 1998
+++ /usr/ports/sysutils/xosview.mine/work/xosview-1.7.1/bsd/cpumeter.h	Mon Aug  2 21:43:34 1999
@@ -23,12 +23,14 @@
 
 class CPUMeter : public FieldMeterGraph {
 public:
-  CPUMeter( XOSView *parent );
+  CPUMeter( XOSView *parent, const char *cpuID = "cpu");
   ~CPUMeter( void );
 
   const char *name( void ) const { return "CPUMeter"; }
   void checkevent( void );
 
+  static int countCPUs(void);
+  static const char *cpuStr(int num);
   void checkResources( void );
 protected:
   long cputime_[2][5];

--FCuugMFkClbJLl1L--


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-smp" in the body of the message




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