Type ASSEMBLE
Source Lines : 3,008
Fixes Applied : 18
Most Recent Version : Thursday, December 7, 1978
Last Fix ID : [HRC065DK]
Module
DMKDSP
Function
DMKDSP IS ENTERED AFTER EACH INTERRUPT HANDLER HAS FINISHED PROCESSING, AND AFTER EACH STACKED CPEXBLOK, I/O REQUEST, DEFERRED INTERRUPT TASK, AND EXTERNAL INTERRUPT HAS BEEN SERVICED. IT UPDATES THE CPU TIMES CHARGED TO THE USER THAT HAS RECEIVED SERVICE, UP- DATES ALL VIRTUAL TIMERS, AND REFLECTS ANY PENDING INTERRUPTS FOR WHICH THE USER IS ENABLED. AFTER THE USER'S STATUS HAS BEEN UPDATED, EITHER THE NEXT AVAILABLE STACKED REQUEST IS STACKED, OR THE HIGHEST PRIORITY RUNNABLE USER IS DISPATCHED.
Attributes
REENTRANT, RESIDENT, ENTERED VIA GOTO
Operation
A. PROCESSING AT ENTRY 1. MAIN DISPATCH ENTRY POINT - IF CPSTATUS SWITCH INDICATES A STACKED REQUEST WAS BEING PROCESSED, GO TO SECTION D. TO START CHECKING OUT USER'S STATUS. IF CPSTATUS INDICATES RETURN FROM WAIT OR FROM RUNNING A USER, BAL TO THE APPROPRIATE ROUTINE TO ACCOUNT FOR THE TIME, AND PROCEED TO SECTION D TO CHECK OUT THE USER. IF CPSTATUS INDICATES RETURN FROM RUNNING A USER AND THERE HAS BEEN NO CHANGE TO THAT USER'S STATUS, GO DIRECTLY TO SECTION F, BYPASSING SECTIONS D AND E. 2. FAST REFLECT ENTRY POINT - IF CPSTATUS INDICATES THE SYSTEM WAS NOT RUNNING A USER, OR IF THAT USER IS NO LONGER RUNNABLE, OR IF THE SYSTEM IS EXTENDING, THE FAST REFLECT PATH IS NOT CONTINUED. IF THE SYSTEM LOCK IS HELD OR CAN BE OBTAINED, CONTINUE PROCESSING IN STEP 1 ABOVE; OTHERWISE, CONTINUE PROCESSING IN STEP 5 BELOW. IF THE USER IS RUNNING VIRTUAL TIMERS, BAL TO THE ACCOUNTING ROUTINE TO UPDATE AND TEST THE USER'S VIRTUAL TIMERS. IF THE USER IS STILL DISPATCHABLE, INSERT THE PROGRAM MASK AND CONDITION CODE FROM THE VIRTUAL PSW INTO THE APPROPRIATE OLD PSW (EITHER I/O OR PROGRAM), STORE THE UPDATED PSW IN RUNPSW, AND RE-DISPATCH. 3. NEW PSW ENTRY POINT - IF THE PSW HAS BEEN ALTERED OUTSIDE OF DMKDSP, FIRST DO ACCOUNTING AS IN STEP 1 ABOVE; THEN GO DIRECTLY TO THE PSW VALIDATION ROUTINE (SECTION E). 4. VIRTUAL TIMER INTERRUPT ENTRY - FIRST QUEUE AN EXTERNAL INTERRUPT BLOCK FOR THIS INTERRUPT. THEN DO ACCOUNTING FOR THE RUNNING USER, AND GO TO SECTION D TO CHECK OUT THE USER'S STATUS. 5. RUN-USER ENTRY POINT - IF CPSTATUS INDICATES RETURN FROM WAIT OR FROM RUNNING A USER, BAL TO THE APPROPRIATE ROUTINE TO ACCOUNT FOR THE TIME. IF THE SYSTEM WAS RUNNING A USER AND THERE IS A TIMER INTERRUPT PENDING FOR THAT USER, VERIFY THAT THE USER HAS A DEFERRED INTERRUPT TASK STACKED. IF NOT, SET UP AND STACK THE DEFERRED TASK FOR ENTRY TO DMKDSPCH. THEN UNLOCK LASTUSER IF LASTUSER WAS NOT USING SHARED SYSTEMS. IF THERE IS NO SPECIAL SITUATION (SUCH AS EXTEND OR A QUIESCE SIGNAL) PENDING, GO TO SECTION H TO SELECT A USER FOR DISPATCHING.
Calls to Other Routines
DMKERMSG - CALLED TO WRITE ERROR MESSAGES TO USER DMKUSOFF - CALLED TO LOG OFF A USER WHO HAS ENTERED A DISABLED WAIT STATE WHILE DISCONNECTED DMKSCNVU - CALLED TO LOCATE VIRTUAL UNIT BLOKS FOR INTERRUPT- ING DEVICES DMKCFMBK - CALLED TO PLACE USER IN CONSOLE FUNCTION MODE DMKCVTBH - CALLED TO CONVERT BINARY TO HEX DMKSCHDL - CALLED TO MAINTAIN SCHEDULER LISTS OF ACTIVE USERS DMKPERIL - CALLED TO HANDLE PER TRACING PER001 DMKVATAB - CALLED TO MAINTAIN VIRTUAL RELOCATE SIMULATION TABLES FOR VIRTUAL MACHINES WITH THE VR FEATURE DMKVATBC - CALLED WHEN A VIRTUAL MACHINE GOES FROM EXTENDED TO BASIC CONTROL MODE DMKVATEX - GOTO TO RELECT PSEUDO PAGE FAULT DMKVATMD - CALLED WHEN A VIRTUAL MACHINE IN EXTENDED CONTROL MODE ENTERS VIRTUAL TRANSLATE MODE DMKVMASH - CALLED TO CHECK IF LASTUSER CHANGED A SHARED PAGE DMKVMCEX - CALLED TO REFLECT VMCF MESSAGE HEADER DMKTRCEX - TO TRACE A VIRTUAL MACHINE EXTERNAL INTERRUPT DMKTRCIO - TO TRACE A VIRTUAL MACHINE I/O INTERRUPT DMKTRCIT - TO SET NEEDED "SVC B2" FOR INSTRUCTION TRACING DMKTRCPG - CALLED TO TRACE A VIRTUAL MACHINE PROGRAM CHECK DMKFREE - CALLED TO OBTAIN FREE STORAGE DMKFRET - CALLED TO RELEASE STORAGE BACK INTO FREE POOL DMKPTRAN - CALLED TO FETCH A PAGE DMKEXTSP - CALLED TO ISSUE SIGP INSTRUCTION DMKLOKDF - CALLED TO OBTAIN A LOCK WITHOUT SPINNING DMKLOKVM - CALLED TO OBTAIN A VMBLOK LOCK DMKLOKSP - CALLED TO SPIN UNTIL A LOCK IS AVAILABLE DMKLOKPS - CALLED TO SPIN UNTIL A CONDITION IS SATISFIED DMKSTKDE - CALLED TO STACK A DEFERRED INTERRUPT TASK DMKSTKMP - CALLED TO STACK A CPEXBLOK FOR THE CURRENT PROC DMKMCHSE - CALLED FOR SOFT MACHINE CHECK RECOVERY DMKMCTPR - CALLED FOR AUTOMATIC PROCESSOR RECOVERY DMKPRGSM - GOTO TO REFLECT INVALID PSW INTERRUPTION DMKCCHRF - CALLED TO REFLECT CHANNEL CHECK TO VIRTUAL MACHINE