Changes made to Nanny --------------------- (V1.0-000) June 22, 1987 - Zar - Bug: - If MAXIDLE < sysgen TTY_TIMEOUT and - VTA0 is created at boot, Nanny logged - off the VTAn detached terminal processes. - Fix: - Nanny ignores VTAn detached terminal - processes and lets VMS delete them. (V1.0-001) June 23, 1987 - Zar - Bug: - If MAXIDLE < sysgen TTY_TIMEOUT and - VTA0 is created at boot, Nanny logged - the user off immediately after reattaching. - Fix: - If the physical terminal doesn't exist, - she no zeros the idle counter for that - process. (V1.0-002) June 25, 1987 - Zar - Addition: - Check for processes with logical terminals, - no physical terminals, and usernames equal - to '' during each cycle and delete - them. - - These processes are created when virtual - terminals exist, a terminal line is set with - the disconnect and secure qualifiers, and a - user hits two break keys while logging in. (V1.0-003) July 6, 1987 - Zar - Addition: - Added code to implement the IGNORE and - LISTEN commands. These two commands stop and - start sending status messages to the mailbox - NANNY$PEEK if someone has an outstanding read - on this mailbox. The LISTENACP program can be - used to read a message from this mailbox every - 15 seconds. (V1.0-004) July 7, 1987 - Zar - Addition: - Nanny now turns off resource wait mode so she - will never enter MWAIT states. (V1.0-005) July 8, 1987 - Zar - Bug: - Algorithm used to forget processes that have - died since the last cycle was still partially - coded for VMS V3 behavior and would cause Nanny's - process tables to grow but never shrink. - Fix: - Change algorithm in main program. Bug was found - by the new addition of NANNY$PEEK debugging tool. (V1.1-000) July 10, 1987 - Zar - Bug: - LISTEN and IGNORE commands were coded wrong and - disabled after a period of great frustration. - Fix: - LISTEN and IGNORE commands were coded correctly - after a warm up session on using the $QIO calls - with mailboxes. A new program has been added to - make use of the LISTEN command called LISTACP. (V1.1-001) July 15, 1987 - Zar - Addition: - Added the new Nanny command VERSION to report - the current version of Nanny. This command - caused the command disable mask to shift the - bits representing WAKE, WCLR, and WSHOW, so - Nanny users should beware of the WSHOW command - being disabled unless a change is made to the - command disable bit mask in the parameter file. (V1.1-002) July 15, 1987 - Zar - Addition: - Automatically delete processes with usernames - '' using a virtual terminal and no physical - terminal connected. This happens when a terminal - is set /SECURE/DISCONNECT, VTA0 is created at - boot time, and a user hits the break key twice - while logging in. (V1.2-000) July 17, 1987 - Zar - Addition: - Added an optional line to the end of the existing - parameter file for a text string to be used with - the future function dealing with SYS$ANNOUNCE and - load average announcement at login. (V1.2-001) July 17, 1987 - Zar - Addition: - Changed NEW_LOG subroutine used to initialize the - parameter file and reread the parameter file to - display a line in the logfile when a parameter is - initialized or changed. (V1.2-002) July 17, 1987 - Zar - Addition: - Deleted code in the NEW_LOG subroutine, used to - initialize the parameter file and reread the - parameter file, that recreated a new logfile every - midnight. Whenever a new logfile is desired, the - VMS CREATE command can be used to start a new - logfile or RENAME can cause Nanny to recreate the - logfile. (V1.2-003) July 20, 1987 - Zar - Addition: - Fully implemented new Nanny function #28 to ask - Nanny to create a specialized SYS$ANNOUNCE logical - name in the system table in executive mode which - consists of the node name (if one exists), DECNET - node area and number (if they exist), version of - VMS in use, when the machine was last booted, the - interactive login limit, the current system process - load, and an optional last text line. The last - line of the SYS$ANNOUNCE text can be specified on - the last line of the parameter file as text or a - logical name to translate (must end with ":"). (V1.2-004) July 27, 1987 - Zar - Addition: - Changed function 28 to display memory usage on - SYS$ANNOUNCE along with the existing information. (V1.2-005) July 28, 1987 - Zar - Fix: - Changed the method for deleting processes (see - July 8 bug) to allow for VMS to report processes - in either increasing or decreasing numerical - order. It still appears as if Nanny forgets to - remove processes from her tables under certain - circumstances. It is hoped that this fix will - decrease the likelyhood of this problem. (V1.2-006) July 28, 1987 - Zar - Addition: - When subroutine NEW_LOG rereads the parameter - file and notices changes to the command disable - bit mask or the function enable bit mask, the - logfile will show what is enabled in each mask. (V1.2-007) July 30, 1987 - Zar - Bug: - STARTNAN.COM didn't specify the new privilege - PSWAPM for disabling process swap mode. - Fix: - Added PSWAPM to the privilege list in the run - command. (V1.2-008) July 30, 1987 - Zar - Fix: - Made major modifications in reading the parameter - file. (V1.2-009) July 30, 1987 - Zar - Bug: - Disk names in the disk watch were restricted to - less than 10 characters in length. - Fix: - Changed to allow a name to be 64 characters or - less. (V1.2-010) July 30, 1987 - Zar - Bug: - Sending wake-up calls to usernames required a - trailing colon on the username. - Fix: - Changed code to allow a destination string without - a trailing colon. (V1.2-011) July 30, 1987 - Zar - Bug: - Subroutine BOOST was never called and used to be - used to raise all processes priorities back to - normal after a certain number of seconds after a - Nanny cycle. - Fix: - Changed DIE routine to call boost. Also changed - BOOST behavior to not raise a priority above the - SYSGEN parameter DEFPRI. **********v********** (V1.2-012) July 31, 1987 - Zar - Bug: - Sending a message to Nanny to kill herself with - a return mailbox of NANNYS$BOX and the process I.D. - of a running Nanny would work from any account. - Fix: - Changed message receiving routine to look at the - iosb of the read from NANNYS$BOX to double check - the requesting user is actually associated with - the return mailbox. **********^********** (V2.0-000) Aug 21, 1987 - Zar - Addition: - An extra line prior to line one in the parameter - file and the new command READ to allow timed - switches between multiple parameter files. See - help for exact details. (V2.0-001) Aug 21, 1987 - Zar - Bug: - The NANNYACP program for V2.0 was improperly - updated to insert the originating user's process - ID in the commands sent to Nanny. - Fix: - Changed to insert the process ID correctly after - the return mailbox name. **********v********** (V2.0-002) Aug 22, 1987 - Zar - Bug: - Nanny disappears with an exit status of 0 and no - messages to the logfile (no code in Nanny causes - an exit status of 0). Nanny deletes a process - with a username="" for being idle if the - function bit enabling idle system logoff is set - and then resets the pid counter for the process - to zero. The next section of code checks for any - zombie processes (username="" detached) - and finds the process just deleted (with a pid - set to zero). Nanny then promptly $DELPRC itself. - - This reminds me of the baby Nanny in 1983. I came - into work and found a hung system. After forcing - a crash I looked at the system dump and found - that only three processes were on the system: - Nanny, Swapper, and Null (everything else was - idle too long :-) ). - Fix: - Check for pid <> 0 prior to zombie logoff check. **********^********** (V2.0-003) Aug 24, 1987 - Zar - Bug: - Many commands were confused by the new source - process ID being inserted in all commands after - the return mailbox string. - Fix: - Changed NANNYACP program and the GOTMESS routine - in Nanny to correctly handle the new command - format. This correction was shipped as a man- - datory update #1 to V2.1. (V2.0-004) Aug 24, 1987 - Zar - Bug: - If a READ command is issued with a time that - causes Nanny to be recursive within the READ - command, Nanny will enter an infinite loop and - hang your computer. - Fix: - Added a 5 minute future check in the READ time - command to avoid entering an infinite loop due - to any possible operator typo. This correction - was shipped as a second mandatory update #2 to - V2.1. (V2.1-000) Aug 26, 1987 - Zar - Bug: - NANNYACP and WAKEACP programs had bugs in the - integer function LENCH. - Fix: - Changed LENCH. (V2.1-001) Aug 26, 1987 - Zar - Bug: - Many Nanny commands prior to V2.0 required - the requestor's process ID as one of the - commands' arguments. In versions greater - than or equal to 2.0, Nanny requires all - commands to send this information. - Fix: - Changed many commands to no longer require - a duplicate copy of the requestor's process - ID in the command message to Nanny. (V2.1-002) Aug 26, 1987 - Zar - Bug: - The logfile stamp for the READ command was - not very informative. - Fix: - Changed to include file name requested and - show a delta time when the file will be - read. (V2.1-003) Aug 27, 1987 - Zar - Bug: - Functions QSTOP, QSTART, and REQUEUE didn't - work and were disabled. - Fix: - These commands were sending the queue name - as a counted ASCII string which was wrong. - These three commands are now enabled and - are expected to work as documented. (V2.1-004) Sep 3, 1987 - Zar - Addition: - Added new parameter file constants to deter- - mine what day of the year to advance and - backup the VAX time for possible daylight - savings. Eventually these will change to - character values to allow specifying terms - like 4SUAPR to mean the fourth sunday in - April. (V2.1-005) Sep 8, 1987 - Zar - Bug: - Asking for Nanny to change SYS$ANNOUNCE and - use an optional text or logical to append to - the second line had troubles. - Fix: - Moved all code that modified SYS$ANNOUNCE - to a separate subroutine (from the main - program) and reworked the algorithm used. (V2.1-006) Sep 8, 1987 - Zar - Addition: - Reserved an addition line in the parameter - file for future use. (V2.1-007) Sep 9, 1987 - Zar - Addition: - Added use of function bit 20. If set, the idle - process check requires that both (.and.) the - minimum CPU and minimum I/O are used to be non- - idle. If clear, a process need only require the - minimum I/O .or. the minimum CPU to be non-idle. (V2.2-000) Sep 10, 1987 - Zar - Addition: - Changed the last warning message for idle logout - to clear the screen (3 form-feeds) if function - bit 17 is set (inserted a new function bit bet- - ween exiting function bits). (V2.2-001) Sep 10, 1987 - Zar - Bug: - Final logoff message wasn't being delivered to - the physical terminal so VTAn devices may still - look like someone was logged in when Nanny had - actually killed the process. - Fix: - Changed the call to $BRKTHRU to use the physical - terminal name. (V2.2-002) Sep 11, 1987 - Zar - Addition: - Made function bit 20 disable multiple wake-up - calls by a single user. (V2.2-003) Sep 12, 1987 - Zar - Addition: - If the logical name NANNY$DUMP exists in the - executive system table, Nanny will save out- - standing wake-up calls to the file NANNY$DUMP. - When Nanny restarts, the saved wake-up calls - will be requeued. If they've expired between the - time Nanny stopped and started, they will be - issued at the restart of Nanny. (V2.2-004) Sep 12, 1987 - Zar - Addition: - Added a Nanny command WDUMP to save existing - wake-up calls to the file (argument one). (V2.2-005) Sep 14, 1987 - Zar - Bug: - At startup Nanny would always change the logical - name SYS$ANNOUNCE regardless of the function - bit mask. - Fix: - Made it check the function bit mask. (V2.2-006) Sep 17, 1987 - Zar - Addition: - The second line in the parameter file can - optionally request a Nanny command file be - read at the same time the parameter file is - being reread. The command file can contain - the Nanny commands ADDACC, DIE, FREE, GRAB, - IGNORE, LISTEN, QSTART, QSTOP, READ, REQUEUE, - WAKE, WCLR, WDUMP, and the special command - SPAWN. Each line with a valid command can be - optionally preceded with a time (hh:mm:ss.ss) - that restricts the command on that line to a - specific time of day. The commands are not - checked against the Nanny command disable - bit mask and exclude the mailbox name and - process ID strings normally found in Nanny - commands. (V2.2-007) Sep 17, 1987 - Zar - Addition: - Added code in main program to crash Nanny - if maxuser setting is too low for the current - VMS SYSGEN parameter settings. (V2.2-008) Sep 18, 1987 - Zar - Bug: - Fixed a bug in calculating the new cpu for - each process. - Fix: - New algorithm. (V2.2-009) Sep 18, 1987 - Zar - Bug: - Call to $GETJPI in EXEC mode causes all - processes on the system to inswap and get - a fraction of CPU because some items are - not available in the PCB and JIB. - Fix: - Make an initial call to $GETJPI to gather - PID, UIC, STATE, ACCOUNT, & USERNAME and - check STATE to determine if a full $GETJPI - should be issued on the process. (V2.2-010) Sep 18, 1987 - Zar - Addition: - Added code to keep people from accidentally - running Nanny as anything other than a - detached process. (V2.2-011) Sep 18, 1987 - Zar - Bug: - The parameter file read routine only displayed - the numbers of the enabled function bits in - the logfile. - Fix: - Changed this to display alias names instead. (V2.2-012) Sep 21, 1987 - Zar - Addition: - Changed the idle logoff mechanism to read - minimum, default, and maximum cycles for - user logoff. Users can then reset the number - of cycles needed to be idle for themselves - within the minimum and maximum by using the - new Nanny command IDLESET. (V2.2-013) Sep 21, 1987 - Zar - Bug: - The disk watch parsing routine wouldn't remove - or add disks from the watch. - Fix: - Fixed it to use the proper common variable. (V2.2-014) Sep 21, 1987 - Zar - Addition: - Added a Nanny command ISHOW to display the - requested process idle cycle logoff setting - the manager's minimum and maximum values, - and Nanny's cycle time. (V2.2-015) Sep 22, 1987 - Zar - Addition: - Changed the Nanny commands OEN and ODIS to - accept optional terminal names to enable - or disable. Also added these two commands - to be allowed in the optional Nanny command - file (line two of the parameter file). (V2.2-016) Sep 22, 1987 - Zar - Addition: - Changed function bit 7 and added a line to - the parameter file for the value maxsuspend. - If function 7 is set, processes suspended by - Nanny will be resumed after exceeding the - maxsuspend time. (V2.2-017) Sep 22, 1987 - Zar - Addition: - Changed the ADDACC command to precede the - user accounting message with the requestor's - username. (V2.2-018) Sep 23, 1987 - Zar - Bug: - If batch job suspension was on Nanny would not - properly handle the separated suspend list - array when more than one job was suspended and - a job disappeared or was resumed by Nanny. - Fix: - Correctly collapsed the suspend list array when - needed. (V2.2-019) Sep 24, 1987 - Zar - Bug: - The disk monitor would crash after several - passes through the parameter file due to - exceeding the timer quotas. - Fix: - Always cancel the newly reserved disk monitor - timer id number before setting it (ignoring - the status). (V2.3-000) Sep 28, 1987 - Zar - Bug: - If a user requests to set their idle logoff - from some positive cycle to zero, Nanny would - log them off immediately. - Fix: - If idle logoff value is reduced to zero, Nanny - will not logoff the user until the value is - raised again to a positive integer. (V2.3-001) Sep 28, 1987 - Zar - Bug: - The Nanny duplicate CPU function (bit 6) would - only work for interactive and subprocesses if - idle logoff was enabled. - Fix: - Moved code out of the idle logoff IF block. (V2.3-002) Oct 1, 1987 - Zar - Addition: - All wake-up calls now attempt to send the text - cluster-wide if a VAXCluster exists. All wake- - up calls now use the broadcast class URGENT as - well. (V2.3-003) Oct 20, 1987 - Zar - Bug: - The special SPAWN command used in the Nanny - command file needed to allow an optional logfile - specification. - Fix: - Changed code to look for an optional second file - name following the command file name to specify - an optional logfile. Without the optional second - file name, Nanny assumes NAN$_CP_OUT. (V2.3-004) Dec 2, 1987 - Zar - Bug: - Memory counter didn't count jobs in memory that - were in wait states at the time Nanny $GETJPI'd - for all processes. - Fix: - Changed code to use last known memory use. (V2.3-005) Dec 28, 1987 - Zar - Addition: - Added a new Nanny command PAUSE to effectively - mimic the VMS command STOP/QUEUE. (V2.3-006) Dec 28, 1987 - Zar - Bug: - The Nanny command REQUEUE used the $SNDJBC - function SJC$_ABORT_JOB with requeue. This - worked, but there is a better way. - Fix: - Changed REQUEUE command to use SJC$_RESET_QUEUE - function which is much more elegant. (V2.3-007) Dec 28, 1987 - Zar - Bug: - Using tabs in Nanny commands, in the Nanny - parameter file, and in the Nanny command file - produced peculiar results. - Fix: - Detab all input prior to processing input. (V2.3-008) Dec 28, 1987 - Zar - Bug: - ASCII output of UICs neglected to handle the - full 2 bytes for both the member and group. - Fix: - Changed all references to use the O6 FORTRAN - format. This makes a visible change to the - parameter file for the system group UIC. (V2.3-009) Dec 29, 1987 - Zar - Bug: - The "suspend due to low memory" feature of - Nanny got confused and started to suspend - batch jobs but never resume them (even with - a positive maxsuspend). - Fix: - Changed the handling of the suspend tables. (V2.4-000) Dec 31, 1987 - Zar - Bug: - The Nanny dither function was either too - quiet with debugging off, or too noisy with - debugging on. - Fix: - With debugging off, Nanny will now log each - priority dither to the logfile. With debug - on, Nanny will also send messages to user's - that are being affected. (V2.4-001) Mar 2, 1988 - Zar - Addition: - A new user interface program was created - for changing the idle value settings within - Nanny with the IDLESET and ISHOW commands - called NIDLEACP. This program was also made - as an example for users that wish to make - their own user interface programs. (V2.4-002) Mar 4, 1988 - Zar - Bug: - The update to SYS$ANNOUNCE interactive count - includes disconnected (detached) processes. - Fix: - Moved count of disconnected processes from - interactive (i) category to other (o). (V2.4-003) Mar 4, 1988 - Zar - Addition: - Since many users have requested Nanny dis- - connect a process instead of simply deleting - the process for being idle, I have added a - template routine called TTY_DISC. Before Nanny - attempts to $FORCEX and $DELPRC a process, - she calls TTY_DISC to disconnect the process. - Currently the supplied version only returns - a fatal status and the effect doesn't change. - However, if you feel you're a good enough - MACRO programmer to maintain this type of a - function, you're encouraged to make changes - to this isolated function (file NDISC.FOR).