[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