Table of Contents

DMKDSP Abstract

Statistics

Type ASSEMBLE
Source Lines : 3,008
Fixes Applied : 18
Most Recent Version : Thursday, December 7, 1978
Last Fix ID : [HRC065DK]

Synopsis

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