Floyd
displays system load with
p*u*l*s*e
of keyboard LED
currently runs only on linux
 
Secret Gig Page
http://www.asahi-net.or.jp/~pi9s-nnb/floyd/ 
 
Last modified: Thu Dec  1 19:17:05 2005
(
Stable 2.0.1 finally
released)
NEWS
  - After all we've got 
2.0.1.
  
  
 -  Changes in old snapshots (up to 2.0pre01 Edition 15).
      
      
	-  Edition 14 -> 15:
	    
	      -  New hidden option -M/+M to enable/disable `Morse'
		  (or `Professor Dog') mode.  
		  
		  If -M is specified,
		  the `Morse' mode is turned on
		  when the load average exceeds the bigload switch
		  (default 8.5: may be too big ? See option
		  -b in the manual).
		  In the `Morse' mode, current load average
		  is displayed with the number of short blinks of LED between
		  which long turn-off period is inserted.
		  Of course -M/+M is just gracefully ignored by floyd in
		  packet load mode.
		  
		  The `Morse' mode is conceived to reduce the %CPU of floyd in
		  load average mode. I still don't know if it is really
		  effective
		  for that purpose (not well tested in the field), but
		  you may read current (heavy)load directly from the blinking
		  LED at least, and it may make point.
		  
	      
 -  patches directory added in the source. It
		  includes just one patch 00bonzo.diff.gz
		  (the Bonzo patch), to blink LED in response to the
		  chages in the text lines fed from its standard
		  input.  I don't know if this patch still applies
		  allright (maybe Edition 13 or 14 should be used), and
		  forgot how to use it (Maybe the patch includes
		  some documents...). 
		  
		  With this version, I tried to display SCSI HDD traffic
		  read from
		  /proc/scsi/BusLogic/0, and make the keyboard
		  LED act like HDD LED, but it didn't work well. Maybe I
		  should have written /proc/scsi/BusLogic/0
		  reading part in C, or kernel just sabotage to update
		  the proc file when the HDD is busily accessed.
	    
 
	    
	
 -  Edition 13 -> 14:
	    
	      -  The `job' related options are relocated for the
		  integrity of the versions:
  | versions
   |  Edition 13
                         |  Edition 14
 | 
  |  with PTHREAD
   |  -V/-- -D
                         |  -D/-- -F
 | 
|  without PTHREAD
  |  -D -F(alias of -D)
                         |  -D -F not supported
 | 
              
 -  The Changes are:
		  
		    -  The voodoo option -V to define a
			`thread job' in
			PTHREAD version is renamed to -D,
			since I gave up to implement the same -D
			behavior as in version 1.3.x or non-PTHREAD
			version of 2.0pre.
		    
 -  Now option -D `D'efines a floyd `job' in
			both of
			floyd 1.3 and 2.0pre0
			(with or without PTHREAD support).
			The job is run
			as a child process
			in floyd 1.3 and 2.0pre0 without
			PTHREAD support,
			or as a thread
			in 2.0pre0 with PTHREAD support.
		    
 -  The facility of the old -D in Edition 13 
			or older
			is relocated to -F.
			To fork one child in PTHREAD version, use option
			-F (now supported officially, but only for
			PTHREAD version).
			
		    
 -  With the integration on `job' related options above, now
			floyd.1 (TEXT) is
			shared by 1.3.x and 2.0.x.
		    
 -  The option -V
			is still supported awkwardly
			as an alias of -D (or --)
			in the current edition, but may be dropped
			in future.
		  
 
 
	     
 
	 -  Edition 12 -> 13:
	    
	      -  non-PTHREAD version in Edition 12 didn't work. Fixed.
	      
 -  rc.floyd.pthread added.
	      
 -  Renamed VOODOO.README to README.PTHREAD.
	      
 -  More minor fixes. Refer to ChangeLog.
	    
 
	 -  Edition 11 -> 12: Fixes and cleanups. floyd.1 is updated,
	    but it is still the same as that of 1.3.x.
	
 -  Edition 10 -> 11:
	    
	
 -  Edition 9 -> 10
	    
	      -  Cleaned up ugly codes in main().
	      
 -  More robust control on pload_getproc_loop
		  (/proc/net/dev reading thread), LED init, and
		  exiting on signal/errors, etc.
	      
 -  Perhaps "-p +p" (enabled, but changed your
		  mind, and disabled) sort of command line
		  can be handled correctly (it did not work in Edition 9).
	      
 -  Option -v reports some extra info to identify which
		  process is which, and which minite's load average is
		  displayed.
	      
 -  -- is alias for -V (better than
		  -V ?), and - stands for explicit
		  stdin expression.
	      
 -  Shredding /proc/loadavg access to a thread is not yet.	    
 
	 -  Edition 8 -> 9
	    
	
 -  Edition 7 -> 8: floyd -E worked but floyd -CV -SE
            won't work in Edition 7.  Fixed.
	
 -  Edition 6 -> 7
	    
	      -  Now make pthread makes pthread version, and
		  the binary name is also floyd.
	      
 -  /proc/net/dev reading job runs as a thread,
		  and its output is shared by all the packetload mode threads.
		  This feature corresponds to a cpp conditional
		  PROCTHREAD,
		  which is enabled by default in make pthread.
	      
 -  /proc/loadavg accessing does not runs
		  as a thread yet.
		  I think that users don't want two or more
		  load average mode LEDs at the same time, since current edition
		  displays only load average of 1min.
	    
 
	 -  Edition 5 -> 6: Edition5 can't make non-PTHREAD version. Fixed.
	
 -  Edition 4 -> 5: Cleanup.  No change in feature.
	
 -  Exits normally on LED ioctl() error.
	    The IGNOREERROR feature is enabled with undocumented
	    option -f.
	
 - Now floyd can be compiled/installed without PTHREAD
	    support by make all ; make install. The non-PTHREAD
	    version is exactly the same as 1.3.x in performance and
	    in user interface, but it requires a little bit more memory.
	
 -  The non-PTHREAD version: -D option works as 
	    `fork-right-now' command, as in 1.3.x. In the PTHREAD
	    version, the option -D is still just a
	    `fork-child-then-exit' flag.
      
 
      
  
 -  The keyboard BLACKLIST added.
      Send your BLACKLIST if you have any.
      
      
	- MICROSOFT `Natural' Elite ® found to be
	    floyd-incompatible in
	    combination with a certain motherboard or Chipset.
	    Spurious characters are input while floyd is working,
	    and the %CPU of floyd process goes up high. Kernel 2.2.10
	    generates warning
	    "keyboard: Too many NACKs -- noisy kbd cable?"
	    (/usr/src/linux-2.2.10/drivers/char/pc_keyb.c).
	
 - The BLACKLIST mentions this program
	    howmanymoretimes.c,
	    and I found that it is not included anywhere. Sorry.
	    Try
	    cc howmanymoretimes.c;./a.out
	    to test your keyboard.  It loops 4 seconds,
	    and dumps some debugging messages.  If it does not raise any
	    ^G nor warning message, probably your keyboard is
	    floyd-compatible. The a.out may take one arg
	    [N|C|S], to specify an LED to use in the test.
	    The howmanymoretimes.c is conceived to
	    provide a is-keyboard-connected-error check in floyd,
	    but not yet implanted in it.  The source is not well cleaned up.
       
      
 
STABLE VERSION
floyd-2.0.1.tar.gz
2.0.1 release version.
Now PTHREAD support is default, and "make all" makes 
PTHREAD version.
In the PTHREAD version,
you can define a floyd jobs with -D:
floyd -v -C -D -ES -D -pi ppp0 -N
On parsing each -D,
all the current option/parameter status at that point are copied
to a struct floyd_param, whose pointer is then registered in
a struct floyd_job.
The floyd_job is all launched
after whole command line arguments are parsed.
In the PTHREAD version, option -F just
determines whether a child process should be forked or not,
and can be put anywhere in the command line.
One still-undocumented option -o is present
 (I don't remember if I really didn't
write about it in ChangeLog, nor when I implemented it, though),
with which you can specify
the `o'perating mode: -op: `p'acket load mode,
or -ol: `l'oad average mode. I think I should implement some option
-L<n|c|s> (a generic expression of the  LEDs) too...