      tcsysmon 1.4x ... system monitor for Blackbox / Window Maker / E

 *************************************************************************
   tcsysmon is the fastest system monitor dockapp.  accept no substitute
 *************************************************************************

 System Requirements:

 * 2.2 or higher kernel (tested with 2.2.10 and 2.4.0-test11pre7)
 * GNU Libc 2.0 or higher (tested with 2.1.3, 2.1.93)
 * X11R6 (tested with X11R6.4 XFree 4.0.1)
 * Xpm 3.4
 * Optional MMX-enabled CPU for slightly faster IRQ update routines.  This
   should theoretically improve performance on SMP systems where we monitor
   24 irq's and have to copy 128 bytes of IRQ data.

 Quick Instructions:

 o-------------o
 | [---------] | <--- memory use
 | [---------] | <--- swap use
 | [=========] | <--- I/O (top bar = read, bottom bar = write)
 |  123:45:00  | <--- uptime in days : hours : minutes
 | 01234567 WX | <--- W, X are page in/out
 | 89ABCDEF YZ | <--- Y, Z are swap in/out
 *---^---------*
     |
     o--- [0..F] are hardware interrupts 0-15 * see NOTE

 * Note:  If you compiled tcsysmon with HIGHIRQ enabled, there will be another
   row of lights in the IRQ area, memory and swap bars will be squished a bit,
   and uptime text moved up.  This allows monitoring up to 24 interrupts that
   are supposedly available on SMP or ALPHA systems.  I have neither, so I
   can't promise anything.  I know SMP has move interrupts because the info
   in /proc/interrupts usually has higher numbers, but I am not sure if 24 is
   the correct number.

 If you need help you can do something like "sysmon -h" to get some brief
 usage info.  But you probably won't see anything that wasn't mentioned here.
 You will definitely not see a competition in ASCII art, like some "other"
 sysmon dockapps provide :)

 ** MODES **

 Normal mode:
 * 16 LED-looking IRQ lights
 * 4 LED-looking memory info lights
 * memory, swap, I/O percentage bars
 * uptime counter

 Swivel mode:
 * 16 squished bars in the IRQ area, attempting to show long-term statistics
   of IRQ usage, by building "peak" usage tables, and slowly dropping the
   levels if a certain IRQ becomes unused.  This is the concept from
   wmsysmon 0.6, but done right this time.
 * 4 LED-looking memory info lights
 * memory, swap, I/O percentage bars
 * uptime counter
 * Enabled on command line using -l parameter

 Mode 5:
 * Same as Swivel mode, except each bar has a peak of 5, and unused bars are
   displayed as blanks, instead of lines
 * This is a compile-time option, and replaces Swivel mode
 * This is the default setting for tcsysmon

 HIGHIRQ mode:
 * Same as Normal, Mode 5, or Swivel modes, but now monitors 24 IRQs.  Cannot
   be used with EQ mode
 * Compile-time option

 EQ mode:
 * 16 bars displaying activity on IRQ's 0 to 15
 * 4 LED-looking memory info lights
 * memory, swap, I/O percentage bars
 * uptime counter
 * This is a compile-time option.  Off by default.

 
 Boring stuff you can skip:

 tcsysmon was based on the concept of wmsysmon 0.2 written by Dave Clark
 (clarkd@skynet.ca).  During the initial rewrite, some code was borrowed from
 wmsysmon 0.2, but later rewritten, and at this moment tcsysmon contains no
 code written by Dave Clark.  The original UI however was kept, because it
 had a good combination of usability and clarity, in a small form factor.
 
 My main problem with wmsysmon 0.2 was that it used up way too much CPU time,
 and soon after downloading it (around Feb 1999) I commented out IRQ routines
 to try and save some CPU cycles.  I ran wmsysmon in this IRQ'less mode for
 about a year and a few months until I got bored one day and decided it was
 time to fix it for good.  At that time I was running 2.3.99 test kernels,
 and haven't seen 2.2 in use except on the servers at work.  Original wmsysmon
 was also broken in the 2.3 department because it didn't display disk IO when
 used with 2.3+.

 So, I fixed it.  Since this became a separate version (complete rewrite),
 and since wmsysmon maintenance has been taken over by some clown without a
 sense of humor, so I figured I fix this up so it works on systems other than
 mine (this was initially written for MY personal use only, I figured I 
 should share with others though)
 ... That was versions 1.x of tcsysmon.

 Goals:

 * Reduce CPU usage as much as possible
 * Prepare wmsysmon for 2.4 kernel
 * Monitor read AND write I/O statistics, not just composite.

 Features:

 * 2.2 and 2.3/2.4 kernel support
 * minimal CPU usage using a special kernel module to gather statistics
 * user-defined update rates
 * "original" wmsysmon 0.2 IRQ lights mode (default)
 * "IRQ bars" mode concept borrowed from wmsysmon 0.6 (swivel mode)
 * new "EQ-like" IRQ monitor (uncomment the appropriate define in Makefile)
   I personally do not like this mode.  It also does not support the
   HIGHIRQ option.  It's here for really twisted users who like ugly
   interfaces.  Enabling this, naturally, requires a recompile.

 See the source code for good explanation how it works (HEH). thread directory
 has a older version I implemented using pthreads.  It still works (I think)
 but I have abandoned it since using threads really did not improve anything
 too much, other than lie about real CPU usage to "top" and "ps" and friends.

 timecop [timecop@japan.co.jp]
