Changes revision 285830
1Thu Mar 30 2000 - wnl (3.5beta12) 2 Updated modules: m_aix41.c, m_aix43.c, m_mtxinu.c, m_sco5.c, 3 and m_ultrix4.c. 4 Included m_irixsgi.c from some source that's been floating around 5 SGI. Don't yet know how it compares to m_irix62. 6 7Fri Mar 10 2000 - wnl (3.5beta11) 8 top.c: avoid potential loop if stdout gets closed, use macro 9 for p_active to avoid collision with system macros. 10 m_sunos5: widened some fields to accomodate 5.8. 11 m_decosf1: added ordering support 12 m_irix62_64: provides 64-bit module based on m_irix62. 13 m_irix62: skip bogus files in /proc directory 14 m_svr42MP and m_svr5: complete replacement with updated copies 15 m_mtxinu: complete replacement with updated copies 16 m_aix43: new module for 4.3 17 getans: replaced with a Bourne shell script 18 19Mon Mar 6 2000 - wnl (3.5beta10) 20 m_sunos5.c: workaround for curses bug: ensure that TERMINFO has 21 a value. 22 23Fri Jan 15 1999 - wnl (3.5beta10) 24 top.c: now check return code from read to avoid looping on eof. 25 top.c: delay of 0 now only valid for root. 26 decosf1.c: patches from Rainer Orth should fix most of the 27 problems with this module (including the display of certain 28 processes and runtime errors). 29 sunos5.c: Rainer insisted on putting the slash back in the 30 state field ("run/4") and widened the field to accomodate it. 31 aix.c: widened PID field for 6-digit pids (shortened NICE field) 32 module macosx added, thanks to Andrew Townley. 33 34Fri Dec 18 1998 - wnl (3.5beta9) 35 Configure checks status of "make" and complains if it fails. 36 37Thu Dec 17 1998 - wnl (3.5beta9) 38 Added module sco5 from Mike Hopkirk. 39 Added module netbsd132 from moto kawasaki. 40 41Sun Oct 25 1998 - wnl (3.5beta9) 42 Added Casper's patches for sunos5 for the following: 43 produce same results as swap -s (5.5 and higher), 44 don't use system_pages kstat when /dev/kmem can be opened, 45 skip . and .. when reading /proc, replace use of SOLARIS24 46 with OSREV. 47 48Fri Sep 11 1998 - wnl (3.5beta9) 49 Added workaround to getans for the absence of $< in SCO Unix. 50 51Wed Jul 1 1998 - wnl (3.5beta9) 52 Changed structure member "errno" to "errnum" in commands.c. 53 Replaced hpux10 module with one from John Haxby. 54 55Fri Apr 17 1998 - wnl (3.5beta8) 56 Moved definition of _KMEMUSER earlier in m_sunos5.c. This should 57 fix the compilation problem with gnu 2.7.2.3, obviating the need 58 for the fixinc.svr4 patch, but hopefully will not affect anything 59 else. 60 Added -DORDER to m_sunos4mp.c 61 62Tue Nov 18 1997 - wnl (3.5beta7) 63 Added gcc 2.7.2.3 patch for fixinc.svr4 and changed INSTALL and 64 FAQ to refer to it. 65 Added NetBSD HP9000 fix. Hopefully it doesn't break other 66 NetBSD platforms. 67 68Fri Oct 24 1997 - wnl (3.5beta7) 69 Modified m_dcosx.c to change uses of procdir to xprocdir, avoiding 70 a name clash with an include file (Bryn Parrott) 71 72Sat Oct 11 1997 - wnl (3.5beta6) 73 Incorporated Casper's patches for Solaris 2.6 and for the multi- 74 processor bug ("kstat finds too many cpus"). 75 76Sun Jan 20 1996 - wnl (3.5beta5) 77 Fixed Casper's m_sunos5 module: there was a poor interaction with 78 his use of OSREV and SunOS 5.5.1. 79 80Fri Dec 20 1996 - wnl (3.5beta4) 81 Replaced m_sunos5 with a reworked version by Casper Dik. This one 82 should work under 2.6 and may not require that top be run setuid 83 to root under 2.5 or 2.6. This also fixed a bug in m_sunos5 that 84 was introduced in beta3. 85 Fixed calculation of OSREV in Configure. 86 87Wed Nov 20 1996 - wnl (3.5beta3) 88 Incorporated contributed fixes to: bsdos2, irix62, freebsd20, 89 ultrix4, sunos5. Changed calculation of swap area in sunos5 (now 90 uses swapctl). sunos5 now understands idled processors. Changed 91 Configure to determine os revision using uname (when available) 92 and adding it to machine.c compiliation in Makefile as -DOSREV. 93 Changed calls to "exit" in modules to use "quit" instead. 94 95Oct 20 1996 - wnl (3.5beta3) 96 Removed "time" from list of ordering choices: there's no easy way 97 to get cpu time for all processes (it's in the u area). 98 99Fri Oct 18 1996 - wnl (3.5beta3) 100 hpux10 and hpux9: using a better means for determining when a 101 process is idle. 102 decosf1 now includes utils.h. 103 104Fri Sep 13 1996 - wnl (3.5beta2) 105 Fixed Configure to build Make.desc in such a way that doesn't 106 require a long argument to sed. 107 108Thu Sep 12 1996 - wnl (3.5beta2) 109 Fixed bug in display.c that affected empty cpustate names. 110 Created hpux1010 module - a variant of hpux10 that does not use 111 struct proc or struct user (suitable for HP/UX 10.10). 112 113Wed Sep 11 1996 - wnl (3.5beta2) 114 Changes to sunos5 module: Removed WCPU column since it is meaningless 115 on a SVR4-based system. Added THR column to show number of threads 116 for each process. This was not straightforward: the information is 117 not stored in prpsinfo but rather in prstatus. 118 119Tue Sep 10 1996 - wnl (3.5beta1) 120 Added patches for sunos4mp to provide order support. 121 Added irix62 module. 122 Changed prime.c to include stdio.h for printf prototype. 123 Added conditional code to os.h and utils.c to handle systems 124 where sys_errlist is defined in stdio.h (such as NetBSD). 125 126Mon Sep 09 1996 - wnl (3.5beta1) 127 Removed tar and shar rules from Makefile.X -- don't need them anymore. 128 Added -v option to display version number. Updated man page. 129 130Thu Aug 29 1996 - wnl (3.4) 131 Replaced modules (from Tim Pugh): next 32, next40. 132 Fixed bug in username.c: hashing negative uids. 133 134Thu Aug 22 1996 - wnl (3.4beta3) 135 Patched modules: ultrix4, sunos4, sunos5, utek, decosf1, irix5. 136 Added modules: next40, next32. 137 Fixed procstates update bug in display.c. 138 Fixed divide by zero bug in utils.c. 139 Fixed bad number in layout.h 140 Minor fixes to Configure. 141 Complete overhaul of FAQ. 142 143Tue Feb 13 1996 - wnl (3.4beta3) 144 Added convex module from Warren Vosper (originally written by 145 William Jones). 146 147Tue Feb 13 1996 - wnl (3.4beta2) 148 Fixed format_k in utils.c to calculate K and M values correctly. 149 Added check for gigabyte values ('G'). Changed sumamry_format 150 in display.c to use format_k where appropriate. 151 Changed creation of distribution tar file to place everything in 152 a top level directory. 153 154Tue Jan 30 1996 - wnl (3.4beta2) 155 Added m_aix41 module. Added new tag type to module comments: 156 TERMCAP, which defined the library to use for a termcap library. 157 If no TERMCAP tag is found in the module's initial comment, then 158 Configure will default to "-ltermcap". AIX needs this since it 159 put all the termcap routines in libcurses(!) 160 161 Added m_bsdos2 (found lingering in my mailbox). 162 Updated m_svr4 to include support for NCR multiprocessors. 163 Fixed small bug in utils.c 164 165Thu Jan 25 1996 - wnl (3.4beta1) 166 Fixed m_sunos5 invocation of gettimeofday to include "NULL" as 167 second argument. This provides compatability with the Posix- 168 compliant template provided with SunOS 5.5, but doesn't hurt 169 previous versions since they do bother with a template for that 170 function. 171 172 Made changes (recommended by net users) to hpux10, ultrix4, 173 netbsd10, aux3 (replaced aux31). Added module for linux. 174 175Fri Oct 10 1995 - wnl (3.4beta1) 176 Added user-contributed modules for SCO Unix, IRIX 5, HP/UX 10, 177 Pyramid DC/OSX. Changed Configure so that it runs in environments 178 whose c-shells have no 'eval'(!). Added support for multiple sort 179 ordering methods via the -o switch. This option requires support 180 from the machine dependent module: such support was added to 181 sunos5 (thus sunos54) and sunos4. 182 183 display.c: Changed CPU states display line to shorten the leading 184 tag if the data won't fit in the current width. Fixed a divide-by- 185 zero bug that affected ultrasparc servers (and potentially other 186 systems). 187 188 m_sunos5.c: Now asks the system for the correct pagesize rather than 189 assuming it is 4K. 190 191Thu Mar 2 1995 - wnl (3.3 RELEASE) 192 Added module netbsd10 and renamed netbsd to netbsd08. Changed 193 Configure so that it does not use an initial default module name. 194 Made other compatability fixes to Configure. Added comments to 195 decosf1 concerning optimizer bug. Other documentation changes. 196 Added use of "prime.c" to Configure script. 197 198Tue Feb 7 1995 - wnl (3.3beta6) 199 Still one more beta.... 200 Fixes for sunos5 2.4 gcc core dump (it was an alignment problem). 201 Fixed and improvements for decosf1 (including use of format_k 202 for proper SIZE column formatting). Added modules freebsd20 and 203 ncr3000. 204 205Thu Feb 2 1995 - wnl (3.3beta5) 206 One more beta.... 207 Fixed a few bugs in the sunos5 port pertaining to casting and 208 very large memory counts. Added "ifndef HAVE_GETOPT" to getopt.c 209 to provide for conditional compilation of the getopt function. 210 Those systems that have getopt in libc can add -DHAVE_GETOPT to 211 the CFLAGS line in the module to prevent the function from being 212 compiled. Added sunos54 module to accomodate SunOS 5.4 213 peculiarities. Added module for aux3.1. 214 215Wed Jan 4 1995 - wnl (3.3beta4) 216 This is really taking too long......sigh. 217 Fixed SIGWINCH handling once and for all. It now remembers the 218 number of processes you want displayed even thru window resizes. 219 Fixed buffer conflict in utils.c (itoa and itoa7). 220 Lots of small improvements to the various modules were made over 221 the past month: too numberous to list here. SunOS 5 module made 222 more secure thru use of seteuid calls (other SVR4 modules should 223 be modified similarly). One final MP fix to sunos5, too. Module 224 for decosf1 was modified to accomodate V3.0. 225 226Mon Apr 18 1994 - wnl (3.3beta3) 227 I think I finally got a sunos5 module that will work on MP 228 machines. Fixed cpu states figure in osmp41a so that 229 percentages never exceed 100%. Added shell script "install" 230 since Unix vendors can't seem to make up their minds on what 231 options they want to use for the one that comes with the OS. 232 Added netbsd modules from Christos. Fixed lots of other little 233 things over the past few months that I have long since forgotten. 234 235Wed Dec 15 1993 - wnl (3.3beta2) 236 Added module patches from various users: hpux9, sunos5. 237 Fixed bug with batch mode (screen_width wasn't getting set). 238 Changes to accomodate 64 bit machines. 239 Fixed some bugs in command parsing ("renice 19 " did something 240 unexpected). 241 242Mon Aug 30 1993 - wnl (3.3beta) 243 Added lots of little patches from various users. 244 Added routines to utils.c for intelligent formatting of kilobytes 245 and time. These are intended to be used in the modules when 246 formatting a process line. Added code to "summary_format" in 247 display.c to do intelligent formatting of memory quantities. 248 Redid display.c to allow for varying line widths and dynamic 249 reallocation of the screen buffer. 250 Added a SIGWINCH handler to top.c! 251 Added a constant, MAX_COLS, to top.h which defines the absolute 252 widest line we will ever allow. Changed allocations of "char fmt" 253 in all machine modules to use this constant rather than an abitrary 254 number. 255 256Fri Aug 13 1993 - wnl (3.3) 257 Changed return value definition of time-related functions in top.c, 258 display.c, and m_ultrix4.c to time_t (stuart@coral.cs.jcu.edu.au). 259 Fixed bug in display.c: line_update when start != 0. 260 261Wed Aug 4 1993 - wnl (3.2 release) 262 Changes to Configure from Paul Vixie. Added modules for hpux9 and 263 bsd386. 264 265Tue Jul 13 1993 - wnl (3.1 release) 266 More small changes and minor bug fixes. Brought bsd44 up to date 267 and added a module for svr4.2. Changed shar packaging to use Rich 268 Salz's cshar stuff. 269 270Wed Jul 7 1993 - wnl (3.1BETA) 271 More changes and bug fixes to Configure. Applied some other 272 minor bug fixes and suggestions from the beta testers. Added 273 the "metatop" shell script and the "installmeta" rule to the 274 Makefile to make handling multiple machine models and OS versions 275 easier. Added INSTALL and FAQ files. 276 277Tue May 18 1993 - wnl (3.1BETA) 278 Changed Configure to be compatible with most SVR4 environments 279 (differing output from "ls -lg"). Also changed Configure, 280 Makefile.X, etc., to look for module files in the subdirectory 281 "machine" (thanks to Christos Zoulas). 282 283Tue Apr 20 1993 - wnl (3.1BETA) 284 Changed both occurences of "ls -1" in Configure to "ls". This 285 SHOULD produce the same result, and has the advantage that it 286 doesn't produce an error on a system 5 machine. Integrated other 287 changes recommended in the first round of beta testing. 288 289Wed Mar 10 1993 - wnl (3.1BETA) 290 MAJOR CHANGE: I have added a required function to all machine 291 dependent modules, called proc_owner. It takes a pid as an argument 292 and returns the uid of the process's owner. Such capability is 293 necessary for top to run securely as a set-uid program, something 294 that is needed for SVR4 implementations to read /proc. I have 295 retrofitted all modules except dgux with this function, but was 296 not able to test most of them. Top should now run securely as 297 a setuid program. Added 386bsd and sunos5 modules. Added sunos4mp 298 module for MP Suns. 299 300Sat Feb 20 1993 - wnl (3.1ALPHA) 301 Modified top.c and commands.c to compile correctly on System V 302 derived Unixes (especially SVR4), but in a way that doesn't rely 303 on an oracle-like declaration (that is, I don't use "ifdef SYSV"). 304 Fixed some bugs in "Configure" and "getans". Added inspection of 305 env variable "TOP" for options, and made -I default to showing 306 idle processes. Added "u" command to change username restriction 307 on the fly. Created shell script "suntop" for poor multi-version 308 SunOS folks (like myself). 309 310Wed Jun 3 1992 - wnl (3.0) 311 "max_topn" wasn't being used everywhere it was supposed to be 312 in top.c. Many cosmetic changes, including copyright notices in 313 all the .c files. Version number is now handled by version.c and 314 reflects the current patchlevel (which is initially set to 0). 315 Changed Configure and Makefile to allow configurable variables for 316 certain commands: shell, cc, awk, install. Updated README and 317 Porting. Ready to release to the world! 318 319Mon May 18 1992 - wnl (2.9BETA) 320 Added modules provided by Christos Zoulas. Replaced screen.c 321 with one modified by Christos and that will appropriately select 322 and handle the sgtty, termio, or termios system. Integrated many 323 other changes recommended by Christos. Fixed (I hope) the "-b" 324 batch mode display bug. Had to change loadavg to load_avg to avoid 325 a conflict with 4.4BSD. 326 327Mon Apr 27 1992 - wnl (2.8BETA) 328 Added modules provided by Daniel Trinkle. Added patchlevel.h, 329 but the patch level is not yet reflected in the version number. 330 Cleaned up m_sunos4.c a little. 331 332Wed Apr 22 1992 - wnl (2.8BETA) 333 Major internal reorganization. All of the system dependent stuff 334 is now really and truly separated from everything else. The 335 system dependent functions are contained in a separate .c file 336 called a "module". The Configure script knows how to find and 337 set up these modules, but the human installer still needs to tell 338 Configure which module to use (no automagic determination of 339 machine type---sorry). Added -U option to specify one user's 340 processes, but there is no corresponding command...yet. Other 341 changes and improvements too numerous to mention here. Currently 342 there are only two modules: sunos4 and umax. But after this beta 343 release is sent around, I expect more to be written. I just hope 344 that the machine-dependent abstractions don't need to change in 345 the process. 346 347Thu Mar 26 1992 - wnl (2.7BETA) 348 Beta release with minimal architecture support. Updated README 349 and added a first cut at a Porting guide. Added ioctl TIOCGWINSZ 350 code from top2.5+ (courtesy of David MacKenzie). I didn't even 351 try porting the Ultrix support since I don't have access to an 352 Ultrix machine. 353 354Fri Oct 11 1991 - wnl (2.6) 355 This version was not widely released. It contained many changes. 356 Here are the major ones: 357 358 Put in Vixie's idle process hack. 359 360 Enhanced type field in new_message to handle delayed messages. 361 362 Changed u_process to automatically adjust for varying lines of 363 output. Management of screenbuf should now be completely contained 364 in display.c. Removed now extraneous code from CMD_number[12] 365 portion of command switch in top.c. This was the stuff that dealt 366 with zeroing out lines in screenbuf. 367 368 Finally made it all work correctly on a 386i. Problems I had to 369 overcome: kvm_nlist doesn't return 0 on success as advertised (it 370 returns 1 instead); the results of a kvm_nlist are different 371 (n_type can be zero even for a symbol that exists). 372 373 Serious rearrangement for processor dependent stuff. All nlists 374 are now in separate files with the suffix ".nlist". Most machine 375 specific code is in "machine.c" surrounded by appropriate ifdefs--- 376 the goal is to eventually have all machine specific code in this 377 file. Managed to find a way to detect SunOS 4.x at compile-time: 378 this is contained in the include file "sun.h". Completely changed 379 the memory display line for SunOS 4.x---it now displays a far 380 more appropriate report. 381 382 Created the shell script "Configure" to aid in the configuration 383 step. 384 385 Fixed a bug in init_termcap: it will now tolerate an environment 386 which does not have TERM defined (thanks to Sam Horrocks for 387 pointing this out). 388 389Tue Aug 9 1988 - wnl (2.5) 390 Added changes to make top work under version 4.0 of the Sun 391 operating system. Changes were provided by Scott Alexander of the 392 University of Pennsylvania. Thanks! Compile with "-Dsunos4" to 393 get them. Virtual memory statistics are not readily accessible 394 under 4.0, so they don't show up in the output. 395 396Thu Jul 31 1987 - wnl (2.4) 397 Fixed a problem with the 4.0 Pyramid code. The label "cp_time" 398 doesn't exist in the 4.0 kernel anymore. I think the code Carl 399 sent me wants "percpu" instead. That is what I am using and it 400 appears to work. 375 code is still untested (at least by me). 401 Also picked a great deal of lint out of the source. Lint now only 402 complains about a very few nitpicky things (there are far too many 403 calls to "printf" to put a "(void)" in front of!), at least under 404 SunOS. 405 406Tue Jul 28 1987 - wnl (2.4a) 407 Added changes for a Symmetrics Computer Systems s/375 machine. 408 Changes were provided by Paul Vixie. Thanks! According to Mr. 409 Vixie: "These changes were not made at, by, or for SCS proper. 410 SCS would probably be interested in them, but so far only the 411 users' group has them. They were made in February, 1987, to 412 version 2.1 of the program, by Paul Vixie 413 (dual!ptsfa!vixie!paul@ucbvax.Berkeley.EDU)." His changes were 414 integrated into version 2.3 to make version 2.4. 415 416 The SCS peculiarities are summarized in Changes.scs. 417 418Tue Jun 9 1987 - wnl (2.3 for real) 419 Changed the includes for the extra code Carl sent me to only 420 compile on Version 4.0 Pyramid machines. This makes top still 421 compilable on pre-4.0 Pyramids. Specifically, this code is only 422 compiled when both "pyr" and "CPUFOUND" are defined. 423 424Wed Jun 3 1987 - wnl (2.3 with Pyramid additions) 425 It's been a month and I still haven't done anything about 426 distributing this version. However, Carl Gutekunst from Pyramid 427 has sent me some extra patches for some of the Pyramid code. I 428 just added those and will make them part of 2.3. This fixes the 429 following Pyramid problems: adds the inclusion of <sys/systm.h>, 430 uses the correct size for getting the kernel value _ccpu (this bug 431 affected the Vax version as well), sums the elements of the percpu 432 array to calculate a cp_time value (for OSx 4.0). 433 434Fri May 1 1987 - wnl (2.3) 435 I have finally finished all the changes for better support of 436 oddbal terminals. Added the low-level routine "clear_eol" which 437 makes handling terminals without "ce" easy: it uses spaces 438 instead. All direct uses of "clear_line" outside of screen.c have 439 been changed to use this primitive. A terminal with "os" is now 440 handled in such that all situations that need overwriting are 441 completely avoided (including several commands). This required 442 some changes to the way commands are translated into action (in 443 "top.c"). Made several important changes to display.c to prevent 444 overflowing of any of the fields. Specifically, more than 99 445 total processes and a cpu state that reaches 100%. Had to make a 446 small change to two casts in top.c, because the Sun 3.2 compiler 447 was giving warnings on them. Added the "-q" option which lets 448 root run top at a nice of -20 (in case he thinks he really needs it). 449 450Tue Dec 30 1986 - wnl (2.2) 451 I think I fixed a bug reported by Julian Onions at Nottingham. 452 Occasionally, top will core dump when the sprintf in either 453 i_process or u_process overflows due to an exceptionally 454 unrealistic time value. I think it highly unlikely that top can 455 get a bad proc structure (although I suppose it is possible), but 456 the process time is read from the user structure, and that can 457 sometimes be part garbage. So, "get_ucpu" checks the value it 458 returns to make sure its formatted form will not overflow the 459 sprintf. If this doesn't fix the bug, then more drastic measures 460 will be necessary. I plan to make this version the official 461 "top 2.2". [[ This version was never distributed very widely. ]] 462 463Tue Dec 2 1986 - wnl (2.2c) 464 Added to top.c the notion of a "failed command". When a command 465 produces a message (on the message line), an update does not 466 follow it. Before, the message was written and a new display was 467 shown---purposefully not overwriting the message. But the 468 improvements to handle overstriking terminals and terminals 469 without "ce" clear the screen before every display, which would 470 erase the message. Now, the message is displayed and top waits 471 another full time interval before updating the display. This 472 works much better all around. 473 474Mon Nov 24 1986 - wnl (2.2b) 475 Created a new file, utils.c, and made appropriate changes to 476 Makefile. This new file holds all utility functions that can and 477 may be used by more than one "module". Improved i_memory and 478 u_memory (display.c) so that screen updates for the values 479 displayed are only changed when necessary. Also made the line 480 look better: the last fixes made for a rather ugly display. 481 Added the locally defined constant "LoadMax" and added code to 482 top.c to send the cursor home after a space command is entered if 483 the load average is higher than "LoadMax". This provides visual 484 feedback on loaded systems. 485 486Mon Nov 3 1986 - wnl (2.2a) 487 Widened the format for memory usage so that it can display 5 488 digits. This makes that line look a little ugly---maybe I'll fix 489 that later. Screen handling now understands "os" and a missing 490 "ce". It treats them identically: clear the screen between each 491 display. Screen handling code now uses "cd" when appropriate 492 (i.e.: when user has shortened the screen). Made i_loadave clear 493 then screen and took out most of the explicit calls to "clear" in 494 top.c. This method is cleaner, especially in conjunction with 495 "os" handling. Added preprocessor variable "RANDOM_PW" for 496 systems that access the passwd file randomly (Sun's yp and 4.3). 497 With "RANDOM_PW" set, "getpwuid" is used instead of "getpwnam", 498 but uid->username mappings are still hashed internally (because 499 that is still faster than going to disk). 500 501Mon Oct 6 1986 - wnl (2.1) 502 A bug with the kill command was pointed out by "dciem!tim"--- 503 specifying a signal by name did not work correctly. This bug has 504 been fixed with a simple change to commands.c. Another bug made 505 the cpu state percentages incorrect the first time they were 506 displayed. This bug has also been fixed (changed top.c). 507 508Thu Sep 4 1986 - wnl (2.0, at last) 509 This is the version that will (hopefully) get released to the 510 world as top 2.0. 511 Added the "r" and "k" commands for renice and kill, respectively. 512 This required adding a way to handle system call errors, and the 513 addition of the "e" command. Help screen and manual page were 514 changed to reflect this change. Changed all "#ifdef SUN" directives 515 to "#ifdef sun", and changed all "#ifdef PYRAMID" directives to 516 "#ifdef pyr". As much as I hate those choices of preprocessor 517 names (they too easily conflict with real variable names), it does 518 make automatic compilation possible---people don't have to change 519 the Makefile anymore for specific machines. The manual page was 520 changed to automatically incorporate the defaults as set in the 521 Makefile (including an infinite value for TOPN) and the way the 522 manual page is generated by the Makefile was changed to make 523 maintenance of this information automatic. 524 525Mon Jul 28 1986 - wnl (still pre 2.0) 526 Real close now. I put in a new definition for the macro "pagetok" 527 that does an explicit shift of a constant expression involving 528 PGSHIFT. Appropriate checks are made if PGSHIFT is to small. 529 "pagetok" is now used exclusively everywhere to convert kernel 530 clicks to kilobytes. I added a full blown interactive mode with 531 the ability to change some of the runtime parameters (how many to 532 display, time delay, etc.) while top is running. I also 533 incorporated a few ideas from the net: control characters in the 534 command name are replaced with '?'; the '-S' option makes the 535 swapper and pager visible; options have been added to control the 536 number of displays produced (this makes it easier to make 537 performance snapshots with top). I have also added the notion of 538 "infinite" values for number of processes and number of displays. 539 I fixed a long-standing bug in the uid to username mapping code 540 that was only aggravated on the pyramids: it was an ill-defined 541 expression (akin to i = i++). I tweaked the proc_compar routine 542 for qsort slightly so that stopped processes were more likely to 543 show up. Manual page was updated to reflect all changes 544 noticeable to the user. 545 546Tue Jul 1 1986 - wnl (pre 2.0 -- 1.9999?) 547 In the process of major revamping on the way to version 2.0. 548 I have completely done away with curses by adding my own screen 549 management routines in a separate file (screen.c). The rationale 550 for this is that top knows a whole lot more about what is and is 551 not redundant on the screen and can compare simple integer values 552 where curses would have to compare strings. This has turned out 553 to be a very big win speed-wise. The proc_compar routine for 554 sorting has been rewritten to include several more keys. I 555 decided this was necessary when I noticed that the "top" process 556 itself kept disappearing off the top 10 list on a Sun-3. All the 557 processes had the same percentage (0%) and the sort wasn't really 558 doing anything worthwhile. I changed the expression that computes 559 memory usage to use the ctob macro instead of just assuming that 560 pages were 512 bytes. More work still needs to be done before 561 this version is usable. I changed options-processing to use 562 getopt and added appropriate incantations to the Makefile. 563 564Wed Feb 20 1985 - wnl (still 1.8) 565 Put in the ifdef FOUR_ONE statements to make top still compilable 566 on a 4.1 system. Apparently, there are some users out there that 567 need this functionality. Oh well. I don't guarantee any of it, 568 since I can't test it. Made appropriate changes to README and 569 final installation related changes to Makefile. 570 571Sat Feb 2 1985 - wnl (1.8) 572 Removed all the ifdef FOUR_TWO statements and made "top" into a 573 4.2 only program. If someone really wants to still run it on 4.1, 574 then they can do all the work. We don't have a 4.1 machine 575 anymore, so I don't even know if the thing still works under 4.1. 576 Cleaned up the Makefile and the README. Added installation rules 577 to the Makefile, as requested by several sites. Fixed a very 578 obscure divide-by-zero bug. Added a second "key" to the qsort 579 comparison function (proc_compar) so that comparisons are based on 580 cpu ticks if the percentages are equal (provided by Jonathon 581 Feiber at Sun). 582 583Tue Dec 11 1984 - wnl (1.7) 584 Added the virtual and real memory status line to the header area 585 (provided by Jonathon Feiber at Sun) 586 587Tue Nov 20 1984 - wnl (1.6) 588 Added an "exit" if sbrk's fail. Added changes from Jonathon 589 Feiber at Sun: ifdef SUN to make top work on Suns (they don't use 590 doubles in the proc structure), register declarations, check for 591 getting a user structure that has disappeared since the proc array 592 was read (it used to die, now it just shows the process as swapped). 593 594Tue Nov 13 1984 - wnl (1.5) 595 If the number of displayable processes ("active_procs") was less 596 than the number of requested processes ("topn"), top would 597 segmentation fault. This bug has been fixed. Thanks to Prentiss 598 Riddle at ut-sally for pointing out the existence of this bug. 599 600Tue Oct 23 1984 - wnl (1.4) 601 Finally fixed the hash table bug that caused processes owned by 602 root to sometimes appear with either no name or a different name 603 that had UID 0 (such as "operator"). Removed all the ifdef DEBUG 604 blocks to make top ready for distribution to the real world. 605 606Sun Apr 8 1984 - wnl (still 1.3) 607 Made some slight changes to the display format. It now looks more 608 aesthetically pleasing. Added some preprocessor constants so that 609 the two defaults (number of processes and seconds of delay) easier 610 to change. 611 612Thu Apr 5 1984 - wnl (1.3) 613 Changed the order in which things are done at initialization time. 614 This way, if an error occurs before starting the main loop, curses 615 will never get started. Also changed other error handlers so that 616 endwin() is called before any flavor of exit. Specifying a number 617 of processes that is more than the screen can handle is no longer 618 fatal. It displays a warning message and pretends the user 619 specified the maximum for the screen. Finally cured all the TSTP 620 blues (well, almost all). I removed my TSTP handler and convinced 621 the system to always use the one that curses sets up. Turns out 622 that "sleep" was stepping all over it during a pause. So, I don't 623 use sleep anymore. The only problem that remains with it now is 624 redrawing the old display before updating it after a pause. 625 626Tue Apr 3 1984 - wnl (from 1.0 to 1.2) 627 I changed the format of the TIME column from just "seconds" to 628 "minutes:seconds". I also made pausing work correctly. Screen 629 redraws with an up to date display. For compatibility with 4.2, I 630 changed the name of the "zero" function to "bzero". The makefile 631 has been altered to handle versions for 4.1 and 4.2, and README 632 has been updated to reflect these recent changes. 633