diff -ruNbB --exclude '*~' xosview-1.8.2/CHANGES xosview-1.8.2-emw/CHANGES
--- xosview-1.8.2/CHANGES	2004-06-01 06:43:55.000000000 +0200
+++ xosview-1.8.2-emw/CHANGES	2004-08-28 15:35:09.000000000 +0200
@@ -1,5 +1,9 @@
   /*  $Id$  */
 
+Changes from 1.8.2 to 1.8.2-emw
+
+ - added HW-IRQ, SW-IRQ, IO-Wait to linux/cpumeter.cc (for linux 2.6.x)
+
 Changes since xosview-1.8.1
  - Applied sourceforge patch 927112 from Russell Reed which fixes
    the swapmeter when USESYSCALLS is defined.
diff -ruNbB --exclude '*~' xosview-1.8.2/linux/cpumeter.cc xosview-1.8.2-emw/linux/cpumeter.cc
--- xosview-1.8.2/linux/cpumeter.cc	2004-06-01 06:21:54.000000000 +0200
+++ xosview-1.8.2-emw/linux/cpumeter.cc	2004-08-28 15:49:46.000000000 +0200
@@ -19,10 +19,11 @@
 #define MAX_PROCSTAT_LENGTH 4096
 
 CPUMeter::CPUMeter(XOSView *parent, const char *cpuID)
-: FieldMeterGraph( parent, 4, toUpper(cpuID), "USR/NICE/SYS/FREE" ) {
+: FieldMeterGraph( parent, N_CPUMETER_FIELDS, toUpper(cpuID), "USR/NICE/SYS/IO/HI/SI/FREE" )
+{
   _lineNum = findLine(cpuID);
   for ( int i = 0 ; i < 2 ; i++ )
-    for ( int j = 0 ; j < 4 ; j++ )
+    for ( int j = 0 ; j < N_CPUMETER_FIELDS ; j++ )
       cputime_[i][j] = 0;
   cpuindex_ = 0;
 
@@ -34,10 +35,13 @@
 void CPUMeter::checkResources( void ){
   FieldMeterGraph::checkResources();
 
-  setfieldcolor( 0, parent_->getResource( "cpuUserColor" ) );
-  setfieldcolor( 1, parent_->getResource( "cpuNiceColor" ) );
-  setfieldcolor( 2, parent_->getResource( "cpuSystemColor" ) );
-  setfieldcolor( 3, parent_->getResource( "cpuFreeColor" ) );
+  setfieldcolor( CPUMETER_FIELD_USER,  parent_->getResource( "cpuUserColor" ) );
+  setfieldcolor( CPUMETER_FIELD_NICE,  parent_->getResource( "cpuNiceColor" ) );
+  setfieldcolor( CPUMETER_FIELD_SYS,   parent_->getResource( "cpuSystemColor" ) );
+  setfieldcolor( CPUMETER_FIELD_WAIT,  parent_->getResource( "cpuWaitColor" ) );
+  setfieldcolor( CPUMETER_FIELD_HWIRQ, parent_->getResource( "cpuHwIRQColor" ) );
+  setfieldcolor( CPUMETER_FIELD_SWIRQ, parent_->getResource( "cpuSwIRQColor" ) );
+  setfieldcolor( CPUMETER_FIELD_FREE,  parent_->getResource( "cpuFreeColor" ) );
   priority_ = atoi (parent_->getResource( "cpuPriority" ) );
   dodecay_ = parent_->isResourceTrue( "cpuDecay" );
   useGraph_ = parent_->isResourceTrue( "cpuGraph" );
@@ -66,19 +70,26 @@
     getline(stats, tmp);
   }
 
-  stats >>tmp >>cputime_[cpuindex_][0]
-	      >>cputime_[cpuindex_][1]
-	      >>cputime_[cpuindex_][2]
-	      >>cputime_[cpuindex_][3];
+  cputime_[cpuindex_][CPUMETER_FIELD_WAIT] = 0;
+  cputime_[cpuindex_][CPUMETER_FIELD_HWIRQ] = 0;
+  cputime_[cpuindex_][CPUMETER_FIELD_SWIRQ] = 0;
+
+  stats >>tmp >>cputime_[cpuindex_][CPUMETER_FIELD_USER]
+	      >>cputime_[cpuindex_][CPUMETER_FIELD_NICE]
+	      >>cputime_[cpuindex_][CPUMETER_FIELD_SYS]
+              >>cputime_[cpuindex_][CPUMETER_FIELD_FREE]
+              >>cputime_[cpuindex_][CPUMETER_FIELD_WAIT]
+              >>cputime_[cpuindex_][CPUMETER_FIELD_HWIRQ]  
+              >>cputime_[cpuindex_][CPUMETER_FIELD_SWIRQ];
 
   int oldindex = (cpuindex_+1)%2;
-  for ( int i = 0 ; i < 4 ; i++ ){
+  for ( int i = 0 ; i < N_CPUMETER_FIELDS ; i++ ){
     fields_[i] = cputime_[cpuindex_][i] - cputime_[oldindex][i];
     total_ += fields_[i];
   }
 
   if (total_){
-    setUsed (total_ - fields_[3], total_);
+    setUsed (total_ - fields_[CPUMETER_FIELD_WAIT] - fields_[CPUMETER_FIELD_FREE], total_);
     cpuindex_ = (cpuindex_ + 1) % 2;
   }
 }
diff -ruNbB --exclude '*~' xosview-1.8.2/linux/cpumeter.h xosview-1.8.2-emw/linux/cpumeter.h
--- xosview-1.8.2/linux/cpumeter.h	2004-05-22 08:24:15.000000000 +0200
+++ xosview-1.8.2-emw/linux/cpumeter.h	2004-08-28 15:50:09.000000000 +0200
@@ -11,6 +11,15 @@
 
 #include "fieldmetergraph.h"
 
+#define CPUMETER_FIELD_USER  0
+#define CPUMETER_FIELD_NICE  1
+#define CPUMETER_FIELD_SYS   2
+#define CPUMETER_FIELD_WAIT  3
+#define CPUMETER_FIELD_HWIRQ 4
+#define CPUMETER_FIELD_SWIRQ 5
+#define CPUMETER_FIELD_FREE  6
+#define N_CPUMETER_FIELDS    7
+
 class CPUMeter : public FieldMeterGraph {
 public:
   CPUMeter(XOSView *parent, const char *cpuID = "cpu");
@@ -25,7 +34,7 @@
   static const char *cpuStr(int num);
 protected:
   int _lineNum;
-  long cputime_[2][4];
+  long cputime_[2][N_CPUMETER_FIELDS];
   int cpuindex_;
 
   void getcputime(void);
diff -ruNbB --exclude '*~' xosview-1.8.2/linux/diskmeter.cc xosview-1.8.2-emw/linux/diskmeter.cc
--- xosview-1.8.2/linux/diskmeter.cc	2004-06-01 05:32:08.000000000 +0200
+++ xosview-1.8.2-emw/linux/diskmeter.cc	2004-08-28 16:21:06.000000000 +0200
@@ -142,7 +142,9 @@
     // read second value
     stats >> two;
 
-    updateinfo(one, two, 4);
+    // tested with 2.6.8.1: Units of 1k are used in /proc/vmstat
+    // 2 * 512 = 1k
+    updateinfo(one, two, 2);
     }
 
 void DiskMeter::getdiskinfo( void )
diff -ruNbB --exclude '*~' xosview-1.8.2/Xdefaults xosview-1.8.2-emw/Xdefaults
--- xosview-1.8.2/Xdefaults	2004-06-08 19:59:52.000000000 +0200
+++ xosview-1.8.2-emw/Xdefaults	2004-08-28 16:04:09.000000000 +0200
@@ -71,6 +71,8 @@
 xosview*cpuInterruptColor:  red
 xosview*cpuWaitColor:       lightblue
 xosview*cpuFreeColor:       aquamarine
+xosview*cpuHwIRQColor:      red
+xosview*cpuSwIRQColor:      magenta
 xosview*cpuPriority:        1
 xosview*cpuDecay:           True
 xosview*cpuGraph:           True
diff -ruNbB --exclude '*~' xosview-1.8.2/Xdefaults.in xosview-1.8.2-emw/Xdefaults.in
--- xosview-1.8.2/Xdefaults.in	2004-05-22 07:10:35.000000000 +0200
+++ xosview-1.8.2-emw/Xdefaults.in	2004-08-28 16:01:49.000000000 +0200
@@ -71,6 +71,8 @@
 xosview*cpuInterruptColor:  red
 xosview*cpuWaitColor:       lightblue
 xosview*cpuFreeColor:       aquamarine
+xosview*cpuHwIRQColor:      red
+xosview*cpuSwIRQColor:      magenta
 xosview*cpuPriority:        1
 xosview*cpuDecay:           True
 xosview*cpuGraph:           True

