[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdebase/workspace/ksysguard/ksysguardd/Solaris
From:       John Tapsell <john.tapsell () kdemail ! net>
Date:       2010-04-27 21:13:15
Message-ID: 20100427211315.C1827AC8A5 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1119872 by johnflux:

Fix CPU and Network sensors on Solaris

Written by: Jan Hnatek + whitespace fixes

 M  +22 -0     LoadAvg.c  
 M  +3 -0      LoadAvg.h  
 M  +9 -6      NetDev.c  


--- trunk/KDE/kdebase/workspace/ksysguard/ksysguardd/Solaris/LoadAvg.c #1119871:1119872
@@ -38,6 +38,7 @@
 double loadavg1 = 0.0;
 double loadavg5 = 0.0;
 double loadavg15 = 0.0;
+double idle_load = 0.0;
 
 typedef struct {
 	int32_t		ks_instance;
@@ -60,11 +61,13 @@
 	registerMonitor( "cpu/system/loadavg1", "float", printLoadAvg1, printLoadAvg1Info, sm );
 	registerMonitor( "cpu/system/loadavg5", "float", printLoadAvg5, printLoadAvg5Info, sm );
 	registerMonitor( "cpu/system/loadavg15", "float", printLoadAvg15, printLoadAvg15Info, sm );
+	registerMonitor( "cpu/system/idle", "float", printCPUIdle, printCPUIdleInfo, sm );
 	
 	/* Monitor names changed from kde3 => kde4. Remain compatible with legacy requests when possible. */
 	registerLegacyMonitor( "cpu/loadavg1", "float", printLoadAvg1, printLoadAvg1Info, sm );
 	registerLegacyMonitor( "cpu/loadavg5", "float", printLoadAvg5, printLoadAvg5Info, sm );
 	registerLegacyMonitor( "cpu/loadavg15", "float", printLoadAvg15, printLoadAvg15Info, sm );
+	registerLegacyMonitor( "cpu/idle", "float", printCPUIdle, printCPUIdleInfo, sm );
 
 	for (id=0; id<MAX_CPU_COUNT; id++) {
 		cpu_load[id].ks_instance = -1;
@@ -101,11 +104,13 @@
 	removeMonitor("cpu/system/loadavg1");
 	removeMonitor("cpu/system/loadavg5");
 	removeMonitor("cpu/system/loadavg15");
+	removeMonitor("cpu/system/idle");
 	
 	/* These were registered as legacy monitors */
 	removeMonitor("cpu/loadavg1");
 	removeMonitor("cpu/loadavg5");
 	removeMonitor("cpu/loadavg15");
+	removeMonitor("cpu/idle");
 #endif
 }
 
@@ -116,6 +121,7 @@
 	kstat_t			*ksp;
 	kstat_named_t		*kdata;
 	int i;
+	long nproc, id;
 
 	/*
 	 *  get a kstat handle and update the user's kstat chain
@@ -228,7 +234,15 @@
 				}
 			}
 		}
+
+		nproc = sysconf(_SC_NPROCESSORS_ONLN);
+		idle_load = 0.0;
+		for (id=0; id<nproc; id++) {
+			idle_load += cpu_load[i].idle_load;
 	}
+		idle_load = idle_load / nproc;
+
+	}
 	kstat_close( kctl );
 #endif /* ! HAVE_KSTAT */
 
@@ -302,6 +316,14 @@
 	fprintf(CurrentClient, "CPU %d Total Load\t0\t100\t%%\n", id );
 }
 
+void printCPUIdle( const char* cmd ) {
+	fprintf(CurrentClient, "%f\n", idle_load );
+}
+
+void printCPUIdleInfo( const char* cmd ) {
+	fprintf(CurrentClient, "CPU Idle Load\t0\t100\t%%\n" );
+}
+
 void printCPUxIdle( const char* cmd ) {
 	int id;
 
--- trunk/KDE/kdebase/workspace/ksysguard/ksysguardd/Solaris/LoadAvg.h #1119871:1119872
@@ -38,6 +38,9 @@
 void printLoadAvg15( const char *cmd );
 void printLoadAvg15Info( const char *cmd );
 
+void printCPUIdle( const char *cmd );
+void printCPUIdleInfo( const char *cmd );
+
 void printCPUxUser( const char* cmd );
 void printCPUxUserInfo( const char* cmd );
 void printCPUxKernel( const char* cmd );
--- trunk/KDE/kdebase/workspace/ksysguard/ksysguardd/Solaris/NetDev.c #1119871:1119872
@@ -376,17 +376,20 @@
 		}
 
 		/*
-		 *  traverse the kstat chain
-		 *  to find the appropriate statistics
+		 *  find the appropriate statistics; e.g. 'kstat e1000g:0:e1000g0'
 		 */
-		if( (ksp = kstat_lookup( kctl,
-				name, 0, IfInfo[i].Name )) == NULL ) {
+		if( (ksp = kstat_lookup( kctl, name, 0, IfInfo[i].Name )) == NULL ) {
+			/*
+			 *  try module "link"; e.g. 'kstat link:0:e1000g0'
+			 */
+			if( (ksp = kstat_lookup( kctl, "link", 0, IfInfo[i].Name )) == NULL ) {
 			free( name );
-			return( 0 );
+				continue;
 		}
+		}
 		if( kstat_read( kctl, ksp, NULL ) == -1 ) {
 			free( name );
-			return( 0 );
+			continue;
 		}
 		free( name );
 
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic