INSTALL revision 89750
133965Sjdp                             TOP
233965Sjdp                         Version 3.5
333965Sjdp
433965Sjdp                       William LeFebvre
533965Sjdp		      and a cast of many
633965Sjdp
760484SobrienINSTALLATION
833965Sjdp
933965SjdpConfiguration and installation of top is very straightforward.  After
1033965Sjdpunpacking the sources, run the script "Configure".  It will present you
1133965Sjdpwith a series of questions, all of which should be explained in the
1233965Sjdppresentation.  After you have answered all the questions, "Configure" will
1333965Sjdpperform all the necessary configuration.  Once this is finished, type
1433965Sjdp"make install".  Make will compile the sources then install the resulting
1533965Sjdpexecutable and manual page in the appropriate places.
1633965Sjdp
1733965SjdpThe most difficult step in the configuration is the choice of an
1833965Sjdpappropriate machine-specific module.  The Configure script gives you a
1933965Sjdplist of choices complete with brief descriptions of when each choice is
2033965Sjdpappropriate.  Each module is contained in a separate c file in the
2133965Sjdpdirectory "machine".  The module contains all of the machine-specific code
2233965Sjdpthat makes top work correctly on the architecture in question.  All of the
2333965Sjdpcode in the top-level directory is machine-independent (or at least
2433965Sjdpstrives to be).  Hints for some module choices that are not obvious are
2533965Sjdpgiven at the end of this file.
2633965Sjdp
2733965SjdpThe first comment in each c file in that directory contains the synopsis
2833965SjdpAND a detailed description of the machines for which that module is
2933965Sjdpappropriate.  It also contains a list of authors for that module.  If you
3033965Sjdpare really stumped in this choice, use grep to find your machine
3133965Sjdpmanufacturer's name or operating system name in machine/*.c.  If you still
3233965Sjdpcan't find one that is appropriate, then chances are very good that one
3333965Sjdphasn't been written yet.  If that is the case, then you are out of luck.
3433965Sjdp
3533965SjdpHANDLING MULTIPLE ARCHITECTURES
3633965Sjdp
3733965SjdpIf you need to recompile top for a different architecture (that is, using
3833965Sjdpa different module) you need to reconfigure top.  A short cut is available
3933965Sjdpto make this a little easier.  If all of your previous answers to the
4033965Sjdpconfiguration questions (except for the module name of course) are
4133965Sjdpadequate for the new architecture, then you can just use the command
4233965Sjdp"Configure <modulename>".  The configuration script will reconfigure top
4333965Sjdpusing the new module and all the answers you gave last time.  It will
4433965Sjdpfinish with a "make clean".  Once that completes, type "make install"
4533965Sjdpand make will compile the sources and do the installation.
4633965Sjdp
4733965SjdpHANDLING MULTIPLE OS VERSIONS
4833965Sjdp
4933965SjdpBy far the most frequently received bug report for top is something like
5033965Sjdpthis: "We just upgraded our operating system to version 99.9.9.9 and top
5133965Sjdpbroke.  What should we do?"  The simple answer is "recompile".
5233965Sjdp
5333965SjdpTop is very sensitive to changes in internal kernel data structures
5433965Sjdp(especially the proc and user structures).  Some operating systems
5533965Sjdp(especially SunOS) are notorious for changing these structure in every
5660484Sobrienminor release of the OS.  This means that a top executable made under one
5733965Sjdpversion of the OS will not always work correctly (if even at all) under
5833965Sjdpanother version.  This is just one of those tough facts of life.  There is
5933965Sjdpreally no way around it.
6033965Sjdp
6133965SjdpTo make life even worse, some operating systems (SunOS again) will use
6233965Sjdpslightly different proc and user structures on different models.  For
6333965Sjdpexample, "top" built on a SparcStation 2 will not run correctly on a
6433965SjdpSparcStation 10, even if they are both running SunOS 4.1.3.  These
6533965Sjdpunfortunate circumstances make maintaining top very difficult, especially
6633965Sjdpin an environment that runs several different versions of the same
6733965Sjdpoperating system.
6833965Sjdp
6933965SjdpBut there is hope.  If your operating system has a properly functioning
7033965Sjdp"uname" command then you can handle this problem rather gracefully.
7133965SjdpIncluded in the distribution is a shell file called "metatop".  All this
7233965Sjdpshell file does is:
7333965Sjdp
7433965Sjdp	exec top-`uname -m`-`uname -r` "$@"
7533965Sjdp
7633965SjdpSo when you run this script, it execs a filename that is unique to your
7733965Sjdpspecific machine architecture and your OS revision number.
7833965Sjdp
7933965SjdpTo use "metatop", do the following:
8033965Sjdp
8133965Sjdp	. on any machine, run Configure and choose the module that is
8233965Sjdp	  appropriate for the machine
8333965Sjdp	. for all machines which use the same module:
8433965Sjdp	    . group machines according to machine architecture AND OS
8533965Sjdp	      revision number (i.e.: sun4-4.1.1, sun4c-4.1.1, sun4c-4.1.2,
8633965Sjdp	      sun4-4.1.3, sun4c-4.1.3, sun4m-4.1.3, ...)
8733965Sjdp	    . for each group, choose one machine from that group and on it
8833965Sjdp	      run "make clean; make installmeta".
8933965Sjdp
9033965Sjdp
9133965SjdpThe "installmeta" rule in the makefile will insure that top is compiled,
9233965Sjdpinstall the shell file "metatop" as "top", then install the executable
9333965Sjdp"top" with a name appropriate to the machine architecture and OS revision.
9433965Sjdp
9533965Sjdp
9633965SjdpHINTS FOR CHOOSING THE CORRECT MODULE:
9733965Sjdp
9833965SjdpSOLARIS 2.x
9933965Sjdp
10033965SjdpAll versions of Solaris will now work with the module sunos5.  Version
10133965Sjdpspecific modules (such as sunos54) no longer exist.
10233965Sjdp
10333965Sjdp
10433965SjdpSUNOS 4.x AND MULTIPROCESSOR ARCHITECTURES
10533965Sjdp
10633965SjdpFirst, we need to be speaking the same language:
10733965Sjdp
10833965Sjdpsun4	a regular sparc sun 4 architecture machine (sparc station 1,
10933965Sjdp	sparc station 2, IPC, SLC, etc.)
11033965Sjdp
11133965Sjdpsun4m	a multiprocessor sparc (Sparc 10, 4/670, 4/690)
11233965Sjdp
11333965SjdpI intended to write the sunos4 module so that an executable compiled on a
11433965Sjdpsun4m machine would work correctly on a sun4 machine.  Unfortunately my
11533965Sjdpexperiments indicate that this cannot be done.  It turns out that the user
11633965Sjdpstructure is so different between these two architectures that nothing
11733965Sjdpshort of a serious hack will make the same executable work correctly on
11833965Sjdpboth machines.  I recommend that you use the separate module "sunos4mp"
11933965Sjdpwhen making an executable for a sun4m architecture, and use "sunos4" when
12033965Sjdpmaking an executable for sun4 or sun4c architectures.
12133965Sjdp
12233965SjdpDIGITAL UNIX V4.0
12333965Sjdp
12433965SjdpThis is the successor to DECOSF/1.  Use the module decosf1.
12533965Sjdp
12633965SjdpSOLBOURNE OPERATING SYSTEM (OS/MP)
12733965Sjdp
12833965SjdpIf you are running OS/MP version 4.1A, then use the module "osmp4.1a".
12933965Sjdp
13033965SjdpIf you are running a version of OS/MP OLDER than 4.1A (that is, one
13133965Sjdpof its predecessors), use the module "sunos4".
13233965Sjdp
13333965SjdpIf you are running OS/MP 4.1B or LATER, use the module "sunos4mp".
13433965Sjdp
13533965SjdpHP/UX OPERATING SYSTEM
13633965Sjdp
13733965SjdpThe module hpux8 works on all version 8 systems.  Some say that it works
13833965Sjdpwith version 9 as well, but one user did send me a separate module for
13933965Sjdpversion 9.  This module has only been tested on series 800 machines.  I
14033965Sjdpwould recommend the following for those running version 9: try hpux9 and
14133965Sjdpif it doesn't work then try hpux8.  If neither work, then send mail to me
14233965Sjdpand/or the modules' authors.  Another note:  we have a model 730 supposedly
14360484Sobrienrunning version 9.01.  The module hpux9 did not compile successfully, but
14433965Sjdpthe module hpux8 worked fine.  The module hpux10 works on all revisions of
14533965SjdpHP/UX 10 except 10.10, where HP removed the definition of the proc structure
14633965Sjdpfrom the system include files.
14733965Sjdp
14833965SjdpNET/2 386BSD SYSTEMS
14933965Sjdp
15060484SobrienIf your version of the operating system has patchkit 2.4 installed,
15133965Sjdpthen you will need to modify machine/m_386bsd.c and uncomment the
15260484Sobriendefinition of PATCHED_KVM.  This patchkit makes what more than a few
15360484Sobrienpeople believe to be a wholly unnecessary patch to the way the kvm
15460484Sobrienroutines work.
15560484Sobrien
15660484SobrienA/UX SYSTEMS
15760484Sobrien
15860484SobrienThere is a module for A/UX 3.0 and 3.1.  Whether or not it works for
15960484Sobrienany other version is not known.  Proceed at your own risk.
16060484Sobrien
16160484SobrienAlthough AUX does not generally have a renice systemcall, it can be
16233965Sjdpimplemented by tweeking kernel memory.  The flag IMPLEMENT_SETPRIORITY
16333965Sjdpcontrols the inclusion of this code.  It is off be default.  While
16433965Sjdpsuch a simple hack should not be difficult to get right, USE THIS
16533965SjdpFEATURE AT YOUR OWN RISK!
16633965Sjdp
16733965Sjdp