Type ASSEMBLE
Source Lines : 1,534
Fixes Applied : 16
Most Recent Version : Thursday, December 14, 1978
Last Fix ID : [HRC106DK]
Module
DMKVDC
Function
TO ACQUIRE FREE STORAGE IN ADVANCE FOR VIRTUAL BLOCKS FOR ALL THOSE DEVICES WHICH ARE LIKELY TO BE ATTACHED ON THIS COMMAND EXECUTION.
Attributes
REENTRANT, PAGEABLE, CALLED VIA SVC
Operation
1. ACQUIRE FREE STORAGE WORK AREA FOR COUNTERS ETC. 2. FIND RDEVBLOK FOR SPECIFIED ADDRESS IF THE DEVICE IS OFFLINE OR ALREADY DEDICATED, PROCESS NEXT ADDRESS. 3. ACQUIRE IOBLOK AND CPEXBLOK AND SCHEDULE TIO TO THE DEVICE BY CALLING DMKIOSQR. IF THE DEVICE DOES NOT EXIST, SKIP TO PROCESS NEXT ADDRESS. 4. SEE IF VIRTUAL DEVICE IS ALREADY DEFINED (DMKSCNVU). IF THE DEVICE IS ALREADY DEFINED, SKIP TO PROCESS NEXT ADDRESS. IF THE CHANNEL IS DEDICATED, SKIP TO PROCESS NEXT DEVICE. OTHERWISE, KEEP A COUNTER FOR THE NUMBER OF VCHBLOKS/VCUBLOKS/VDEVBLOKS WHICH ARE LIKELY TO BE CREATED IN THIS COMMAND EXECUTION. PERFORM THIS FUNCTION FOR ALL ADDRESSES IN THE RANGE/ALL MULTIPLE DEVICE ADDRESSES. 5. RELEASE IOBLOK AND CPEXBLOK AFTER THIS PHASE IS COMPLETE. 6. DETERMINE NUMBER OF UNUSED (EMPTY SLOTS) IN CURRENT TABLES OF VCHBLOKS/VCUBLOKS/VDEVBLOKS. 7. SUBTRACT NUMBER OF BLOCKS OF EACH TYPE WHICH WILL BE CREATED AS A RESULT OF THIS COMMAND EXECUTION FROM THE NUMBER OF CURRENTLY AVAILABLE BLOCKS OF EACH TYPE TO DETERMINE THE EXACT NUMBER OF NEW VCHBLOKS/VCUBLOKS/VDEVBLOKS WHICH MUST BE CREATED IN THIS COMMAND EXECUTION. 8. ACQUIRE STORAGE FOR NEW VIRTUAL BLOCKS REQUIRED BY CALLING DMKFRERC. IF STORAGE CANNOT BE OBTAINED, RETURN TO DMKVDA WITH GPR2=32. DMKVDA WILL THEN ISSUE ERROR MESSAGE DMKVDA131E. MOVE OLD TABLE OF VCHBLOKS/VCUBLOKS/VDEVBLOKS TO NEWLY ACQUIRED TABLES AND MARK ALL ADDITIONAL BLOCKS AS EMPTY SLOTS. @VA13217 9. RELEASE WORK AREA AND EXIT.
Calls to Other Routines
DMKFRERC - ACQUIRE FREE STORAGE WITH RETURN CODE IN REQUEST CANNOT BE SATISFIED. DMKSCNRU - FIND RDEVBLOK DMKIOSQR - SCHEDULE I/O REQUEST FOR TIO DMKSCNVU - FIND VIRTUAL BLOCKS DMKVIOMK - ADDRESS OF MASK TABLE