Type ASSEMBLE
Source Lines : 2,127
Fixes Applied : 13
Most Recent Version : Thursday, December 14, 1978
Last Fix ID : [HRC106DK]
Module
DMKMON
Function
TO PROCESS COMMANDS AND REQUESTS ASSOCIATED WITH THE MONITOR, INCLUDING MONITOR CALL INTERRUPTS WITHIN THE CONTROL PROGRAM.
Attributes
REENTRANT, PAGABLE, CALLED VIA: BRANCH FROM DMKPRG RE-ENTERED VIA: IOBLOK IRA AFTER MONITOR TAPE I/O INTERRUPT. TRQBLOK IRA AFTER TIME LAPSE EXPIRATION.
Operation
MONITOR CALL INTERRUPT PROCESSING DMKMONMI: THE MONITOR CALL CLASS AND CODE ARE RETREIVED FROM PSA AND A BRANCH IS MADE TO THE APPROPRIATE MONITOR CLASS ROUTINE. FROM THE APPROPRIATE MONITOR CLASS ROUTINE A BRANCH IS MADE TO THE APPROPRIATE MONITOR CODE ROUTINE (THE DATA COLLECTION ROUTINE). EACH ROUTINE COLLECTING DATA CALLS THE BUFFER MANAGEMENT ROUTINE FOR THE AMOUNT OF SPACE NEEDED TO CONTAIN THE SPECIFIC RECORD. THE FOLLOWING IS A SUMMARY OF WHAT DATA EACH OF THE VARIOUS ROUTINES COLLECTS, AND THE COLLECTION VEHICLE. CLASS 0 - PERFORM (TIMER DRIVEN) CODE 0 - COLLECT SYSTEM CLOCKS AND COUNTERS. CODE 1 - COLLECT APU CLOCKS AND COUNTERS. CODE 97 - MONITOR TAPE HEADER RECORD, CREATED BY DMKMONTH. CODE 98 - MONITOR TAPE TRAILER RECORD, CREATED BY DMKMONIO. CODE 99 - MONITOR SUSPENSION DUE TO TAPE BUSY, CREATED BY DMKMONIO. CLASS 1 - RESPONSE (MONITOR CALL) CODE 0 - BEGIN A CONSOLE READ. CODE 1 - CONSOLE OUTPUT. CODE 2 - END A CONSOLE READ. CODE 3 - BEGIN SLEEP WITH TIME OUT. CODE 4 - USER LOGON CODE 5 - USER LOGOFF CLASS 2 - SCHEDULER (MONITOR CALL) CODE 2 - DROP USER FROM Q. CODE 3 - ADD USER TO Q. CODE 4 - ADD USER TO ELIGABLE LIST. CLASS 3 - RESERVED (MONITOR CALL) CLASS 4 - USER (TIMER DRIVEN) CODE 0 - COLLECT VIRT. MACH STATISTICS. CLASS 5 - INSTRUCTION SIMULATION (MONITOR CALL) CODE 0 - BEGIN INSTRUCTION. CLASS 6 - DASTAP (TIMER DRIVEN) CODE 0 - INITIALIZE AND CREATE DASTAP HEADER, CALLED FROM DMKMONTH. CODE 1 - COLLECT DEVICE INFORMATION. CLASS 7 - SEEKS (MONITOR CALL) CODE 0 - DASD SEEK CHANNEL PROGRAM ISSUED. CLASS 8 - SYSPROF (MONITOR CALL - VIA CLASS 2) CODE 2 - COLLECT DEVICE I/O COUNTS AND SYSTEM CLOCKS. AFTER THE APPROPRIATE MONITOR DATA IS COLLECTED THE GENERAL REGISTERS ARE RESTORED FROM DMKPRG AND SYSTEM PROCESSING RESUMES FROM THE PROGRAM OLD PSW. BUFFER MANAGEMENT: THE BUFFER MANAGEMENT ROUTINE MAINTAINS A POINTER TO THE BUFFER CURRENTLY COLLECTING DATA. IF A RECORD IS REQUESTED WHICH OVERFLOWS THE BUFFER, OR IF ONLY ONE BUFFER IS BEING USED AND THE NEXT RECORD WOULD OVERFLOW THE BUFFER, THEN A POINTER TO THE NEXT AVAILABLE BUFFER IS GOTTEN, AND CONTROL IS PASSED TO THE TAPE MANAGEMENT ROUTINE TO WRITE OUT THE BUFFER. TAPE I/O MANAGEMENT: THE TAPE MANAGEMENT ROUTINE KEEPS TRACK OF THE CURRENT STATUS OF THE TAPE. IF THE TAPE IS NOT BUSY THEN A CPEXBLOK IS STACKED WHICH WILL CALL DMKIOSQR TO WRITE THE BUFFER TO TAPE. AFTER THE CPEXBLOK IS STACKED, RETURN IS MADE FROM WHENCE WE CAME. IF THE TAPE IS BUSY, INDICATION IS MADE THAT I/O IS PENDING, SO THAT THE I/O INTERRUPT HANDLER WILL RE-START THE TAPE WHEN THE CURRENT I/O FINISHES. NOTE: WHEN THE CPEXBLOK IS UNSTACKED BY THE DISPATCHER A CALL IS MADE TO DMKFREE TO REPLACE THE BACK POCKET CPEXBLOK. THIS WILL NOT CAUSE AN EXTEND SINCE THE DISPATCHER JUST UNSTACKED AND FRETED THE CPEXBLOK. ALTHOUGH THE DISPATCHER FRET MAY HAVE CAUSED A DIS-EXTEND, RESULTING IN AN EXTEND ON THIS CALL; THIS EXTEND WOULD NOT INVOLVE I/O. SUSPENSION: IF NO BUFFERS ARE AVAILABLE THEN MONITORING IS SUSPENDED. IN THIS CASE, EACH BUFFER IS EITHER BEING WRITTEN TO TAPE, OR WAITING TO BE WRITTEN. A COUNT IS MAINTAINED IN THIS CASE, THERE ARE 2 FULL BUFFERS OF DATA. ONE HAS BEEN SCHEDULED TO GO TO TAPE BUT THE TAPE I/O HAS NOT COMPLETED AND THE OTHER BUFFER IS FULL AND WAITING TO GO TO TAPE. A COUNT IS MAINTAINED OF THE NUMBER OF TIMES THAT THIS CONDITION OCCURRS. A NOTE IS MADE THAT THE MONITOR IS SUSPENDED, ALONG WITH THE CURRENT TOD CLOCK VALUE. AT THIS POINT THE REASON FOR ENTRY INTO DMKMON IS IGNORED AND EXIT IS MADE BACK TO DMKPRG IF ENTRY WAS VIA AN MC INSTRUCTION OR TO THE DISPATCHER IF ENTRY WAS MADE VIA A TIMER INTERRUPT. THE MONITOR IS LEFT DISABLED FOR MC INTERRUPTS. IF A MONITOR TIMER INTERRUPT SHOULD OCCUR, THEN THE TIMER ROUTINE WILL BE DECEIVED INTO THINKING THAT THERE ARE NO EVENTS TO MONITOR. HOWEVER, THE NEXT TIMER INTERRUPT IS SET UP BEFORE HE EXITS TO THE DISPATCHER, SO THE TIMER INTERRUPT PROCESS IS NOT FORGOTTEN. THE MONITOR I/O INTERRUPT HANDLER WILL DETECT THE SUSPEND CONDITION AND DO WHAT IS NECESSARY TO RESUME MONITORING. SEE THE I/O INTERRUPT HANDLER FOR DETAILS OF THAT FUNCTION.
Calls to Other Routines
DMKIOSQR - TO INITIATE I/O FOR JUST FILLED DATA PAGE