swapinfo
========

Swapinfo is designed to provide some information to the user about the
state of the swap space on the system.  I've written it based on a 
brief (!) perusal of the VM code in 386BSD.  I could be pretty confused
about how it all fits together, and perhaps this is totally bogus.
It seems to work for me, though.

How it works:

During startup, the system traverses the list of configured swap partitions,
and determines the size of the various partitions.  As each new partition
is added for swapping (via swapon), the free space on that disk is added
to a linked list of free space.  Adjacent areas are coalesced to form
larger areas.  The swapping algorithm seems to take the first free section
that it finds [?].

Swapinfo reads in the list of configured swap partitions from the /dev/kmem,
to determine the size of the partitions.  It then traverses the list
of free space, figuring up how much is still available and how much
has therefore been used.  Things get a little hairy in that the swap space
is divided amongst the configured swap partitions so that the first
4096 blocks of swap go on the first swap partition, the second 4096 on
the second swap partition, and so on.  This works out to be a fairly
simple bit of code, though.

More caveats:

This works on my system.  Your milage may vary.  Since I'm reading /dev/kmem
to follow a linked list, the program could easily get lost looking for
some free space if anything got changed between reads of /dev/kmem.
If you get occasional inconsistant results, ignore 'em.

Feel free to send bug reports, flames, etc., to:

Kevin Lahey
kml@rokkaku.atl.ga.us
