NEWS for version 0.99 of procps -*- text -*-
===============================
This file is a brief catalog of new features or developments in the package.
For general information about using the programs see their man pages.

NEW PACKAGES OR PROGRAMS
========================

LIBPROC
    I've modularized some routines and fixed some long standing bugs.  Replaced
    the regex() recognition of /proc/PID with a simple check of the first
    character of the filename being a digit which should be just as safe.

    Added an opendir/readdir/closedir style interface to the process table.  The
    new interface seems cleaner, more intuitive and generally more applicable
    (to me anyway).  The only program which uses the new interface is ps.  'w'
    will follow soon.  'top' may take a while longer...  openproc,readproc, and
    closeproc are implemented.  I still want to do readproctab and rewindproc,
    too though.

    Added some kernel and package versioning things to make it easier to be run
    time adaptable.  Also updated sysinfo to understand any /proc/meminfo.  A
    /proc/stat parser should probably be in there as well with the appropriate
    updates to vmstat and xcpustate.

    The general direction procps should move in is lightweight command-line or
    X11/Motif display/format programs and compartmentalized libproc routines to
    parse all of the /proc files.  This isolates the utilities from kernel
    versioning.

TTY DEVICE NUMBER TO NAME RESOLUTION
    Tty device name <-> number mapping has been completely generalized.  It now
    stat's every character special file in /dev and builds a memory mapped table
    of device names indexed in a way that makes lookup of name from number a
    fast, constant time process.  The extra overhead incurred by building
    /etc/psdevtab is non-negligible if you have a large /dev and permissions to
    write the file (or its directory) are required to update the file (which is
    done if it does not exist or if /dev is newer than /etc/psdevtab).

    Hence `root' should `ps' shortly after any modification to /dev (or chmod
    666 /etc/psdevtab :-) to avoid ordinary users rebuilding it over and over.
    Since such modifications are rare, hopefully having a fallback $HOME
    location will not be necessary.  If the file is up to date, the overhead
    incurred is very small.  The generality bought is essentially optimal since
    `ps' tailors its notion of name<->devno mapping according to the /dev of the
    local system which is the canonical repository of this information.

    In principle the name database could encompass all device majors. The file
    would be large, but since I use mmap to access it, only the pages with the
    major of interest are ever actually read off the disk.  Right now I just use
    the majors 2,3,4,5,19,20 which should cover both old and new systems with
    both master and slave devices (I know... no reason for the masters... :-)
    and the multiport serial devices.  Also the 'mknewpty' script is provided
    to update your /dev directory to the new pty master/slave devices.

    The tty abbreviation scheme has been rationalized to match device special
    files.  The leading "tty" or "cu" is stripped, so cua3 -> a3, tty1 -> 1 and
    ttyp9 -> p9.  The t flag in ps now works with a full device names and to
    pick up processes even if they aren't owned by the owner of ps, e.g.
    "ps tcua0" picks up gpm for everyone.  This seems desirable.

WATCH
    A little program similar to another called 'vis' which simply re-displays
    in a polling fashion the output of other programs.  "watch ps --sort:utime"
    might be dubbed a poor man's 'top'.  Though this has been included in procps
    for some time it hasn't been built or installed by default.  It is now.

SKILL/SNICE
    I have written the necessary machine-dependant file for 'skill' and tested
    it somewhat under Linux.  It seems to mostly work, but there are probably a
    few glitches.  This is a generalization of the 'killall' concept.  You can
    send signals or change priority based upon user, command basename (the same
    that 'ps c' gives), terminal, etc.  If you have a user named 'satan' "skill
    -u satan" will kill all their processes. :-) See the man page for more
    details.

    An annoyance of the current implementation is that although permission to
    send signals is based upon the real user id, /proc only gives the effective
    uids of processes.  Hence processes which you *could* kill because they're
    suid-root (X say) won't be detected as kill-able.  Either /proc + readproc
    need to be updated to report the *real* uid to skil or skill needs to try to
    send the signal even if the uid doesn't match.

XCPUSTATE
    This is basicly a unified memory/cpu/network monitor program courtesy of
    Andy Burgess (aab@cichlid.com).  It shows four bars in a window with the
    current usage of various system resources.

PSMISC PROGRAMS
    See the files under psmisc. These files apply to killall, pstree, fuser.
    The version included here is 0.11.  I accidentally put the 0.9 version in
    an unadvertised stealth 0.98 release.  Sorry Werner :-)

CHANGES TO OLD PROGRAMS
=======================

MAKEFILE
    The directory hierarchy has been restructured.  It is now easier to have the
    multiple components to the suite under nearly autonomous administration.
    The library code has also been moved to a subdirectory.  The best thing
    about the new setup is that things like Imake generated Makefiles with
    preconceived notions of 'make install' can be used without getting into the
    business of re-writing component package makefiles.

    There is now an option to build a shared libproc.a which reduces 'ps' and
    'top' sizes by about 10K apiece.  Simply change the value of SHARED.  Also,
    one may optionally install the library header files and archive/shared
    object files into standard system directories.  There are no library man
    pages yet, but the headers are fairly descriptive.

PS
    Several long standing bugs have been fixed and much of the internal code was
    re-written to use my new directory-style interface to the process table.  In
    particular if sorting is disabled (with '-o') the process entries are output
    to the terminal as soon as possible (making it more helpful under heavy
    system load).

    I am considering several new additional features to `ps' including
        regex filtering of which processes to list,
        "grep -s" silent testing for existing of processes matching criteria,
        run-time/user-defined output formats.
    I would also like to completely phase the w,top code which uses the snapshot
    interface instead of the 'readproc' interface.  And of course adding long
    options for the rest of the options would be nice too (I may not get around
    to doing this anytime really soon so patches which implement any of these
    things would most likely be gleefully accepted).

PSUPDATE
    psupdate has been updated to work with ELF kernels.  If you compile it as
    an ELF binary it will handle both a.out and ELF kernels.  If you compile it
    as an a.out binary it will only handle a.out kernels.  Many thanks to Jeff
    Uphoff.

    Ultimately we would like to see if we can get the address->wait channel
    mapping right out of the running kernel so that we can eliminate version
    skew of /etc/psdatabase.  Someone wrote me that they had done this but I
    never saw a patch or source for it.
 
TOP
    A user-defined format would be nice here too.  Alternate sorting criteria
    (top memory users instead of top CPU users, etc.) may be another interesting
    alternative.  Of course the sorting in ps can do all of that, but it doesn't
    have any optimal screen update action going down... :-)

XLOAD/XIDLE/XMEM
    These have all been updated to use the sysinfo.c routines from libproc and
    so will be more resistant to /proc format changes.

