Type ASSEMBLE
Source Lines : 1,398
Fixes Applied : 21
Most Recent Version : Thursday, December 14, 1978
Last Fix ID : [HRC039DK]
Module
DMKVDA
Function
TO 'ATTACH' A REAL DEVICE TO A USER AS A VIRTUAL DEVICE, OR TO DEDICATE ALL DEVICES ON A PARTICULAR CHANNEL TO A SPECIFIED USER.
Attributes
REENTRANT, PAGEABLE, CALLED VIA SVC
Operation
1. THE INPUT LINE IS SCANNED VIA A CALL TO DMKVDCSC. DMKVDCSC WILL SCAN THE COMMAND LINE VIA DMKSCNFD AND DMKCVTHB TO OBTAIN AND CONVERT FROM HEX TO BINARY (WHERE APPROPRIATE) THE REAL DEVICE, USERID, AND VIRTUAL DEVICE. IF ANY FIELDS ARE OMITTED OR INVALID, AN ERROR CODE IS RETURNED TO THE CALLER AND DMKVDA WILL ISSUE AN APPROPRIATE ERROR MESSAGE BASED ON THE RETURN CODE RECEIVED. DMKCFCSC IS CALLED BY DMKVDCSC TO SCAN THE FIRST COMMAND OPERAND TO DETERMINE IF A RANGE OF REAL DEVICE ADDRESSES WAS SPECIFIED. IF MULTIPLE ADDRESSES ARE SPECIFIED ON THE COMMAND LINE, A WORK AREA IS OBTAINED AND ALL MULTIPLE REAL ADDRESSES ARE STORED IN BINARY FORM IN THIS WORK AREA FOR LATER PROCESSING. 2. DMKVDCPS WILL BE CALLED TO PERFORM A PRESCAN WHEN A RANGE OF REAL ADDRESSES OR MULTIPLE REAL ADDRESSES WERE SPECIFIED ON THE COMMAND LINE. THE PURPOSE OF THE PRESCAN IS TO DETERMINE THE NUMBER OF REAL DEVICES WHICH ARE LIKELY TO BE ATTACHED ON THIS COMMAND EXECUTION AND TO ACQUIRE STORAGE FOR VIRTUAL BLOCKS IN ADVANCE TO MINIMIZE REPEATED CALLS TO DMKFRE LATER BY DMKVDS. DMKVDCPS WILL BE CALLED ONLY WHEN MULTIPLE REAL ADDRESSES OR A RANGE OF REAL ADDRESSES WERE SPECIFIED ON THE COMMAND LINE. 3. DMKSCNRU IS CALLED TO FIND RDEVBLOK FOR THE REAL DEVICE (ERROR RETURNED IF NOT FOUND). DMKSCNAU IS CALLED TO FIND THE ACTIVE USER FOR WHOM THE ATTACH IS SPECIFIED (ERROR RETURNED IF HE IS NOT LOGGED ON). DMKSCNVU IS CALLED TO ENSURE THAT THE VIRTUAL DEVICE DOES NOT ALREADY EXIST (ERROR RETURNED IF IT DOES). 4. A CALL IS MADE TO DMKVDEDC TO VERIFY DEVICE EXISTENCE. SETS UP AN I/O TASK (TIO) TO SEE IF THE DEVICE EXISTS. IF THE DEVICE DOES NOT EXIST, IT IS MARKED OFFLINE AND A 'DOES NOT EXIST' MESSAGE IS ISSUED FROM DMKVDA. FOR DASD, DMKVDEDC WILL SET UP AND EXECUTE AN I/O TASK TO READ THE DASD VOLUME LABEL OF THE DEVICE BEING ATTACHED. IF SUCCESSFUL, THE VOLUME SERIAL IS INSERTED INTO THE 'RDEVSER' FIELD OF THE REAL DEVICE BLOCK. AN ERROR RETURN CODE IS PASSED BACK TO DMKVDA IF FAILURE ENCOUNTERED ON THE READ. A FLAG IS SET IF IT IS A CP/370 OWNED VOLUME. IF DMKVDEDC WAS CALLED WITH PARM = 1, INDICATING ALLOCATION DATA IS PRESENT, THE ALLOCATION RECORD IS READ INTO FREE STORAGE. 5. IF THESE TESTS ARE SATISFACTORY, THEN DMKVDSAT IS CALLED TO ATTACH THE GIVEN REAL DEVICE AS A VIRTUAL DEVICE. IF AN ERROR RETURN OCCURS FROM DMKVDSAT, THEN THE ERROR CODE IS RETURNED TO THE CALLER OF DMKVDAAT AND AN ERROR MESSAGE IS SENT. 6. IF DMKVDSAT WAS SUCCESSFUL, A MESSAGE IS SENT TO THE USER INDICATING THE DEVICE HAS BEEN ATTACHED; AN ADDITIONAL MESSAGE IS SENT TO THE CALLER INDICATING THAT THE DEVICE HAS BEEN ATTACHED. IF THE CALLER IS NOT THE SYSTEM OPERATOR, A MESSAGE IS SENT TO THE SYSTEM OPERATOR INDICATING WHAT DEVICE WAS ATTACHED BY WHAT CALLER TO WHAT USER. 7. PROCESSING WILL CONTINUE IF AN ERROR IS ENCOUNTERED WHILE PROCESSING MULTIPLE REAL ADDRESSES OR A RANGE. AN ERROR MESSAGE WILL BE ISSUED FOR THE DEVICE ADDRESSES IN ERROR. A RESPONSE TYPE MESSAGE WILL ALSO BE ISSUED FOR THOSE REAL ADDRESSES IN THE RANGE WHICH COULD BE ATTACHED OR THOSE MULTIPLE ADDRESS IN THE COMMAND LINE WHICH COULD BE ATTACHED. 8. FOR THE ATTACH CHANNEL COMMAND, A CHECK IS MADE TO ENSURE THAT THE COMMAND LINE IS CORRECT VIA A CALL TO DMKVDCSC. DMKVCHDC IS THEN CALLED TO ATTACH THE CHANNEL AND MARK ALL CONTROL UNITS AND DEVICES ON THE CHANNEL AS DEDICATED.
Calls to Other Routines
DMKSSSVA DMKSSSAS DMKSTKCP DMKSCNRN DMKSCNRU DMKSCNAU DMKSCNVU DMKSCNVS DMKVDSAT DMKCVTBH DMKQCNWT DMKFREE DMKLOCKQ - LOCK USERID DMKLOCKD - UNLOCK USERID DMKVCHDC DMKVDCPS - PRESCAN DMKVDCAL - ALLOCATION ROUTINE DMKVDCSC - SCAN COMMAND LINE DMKSYSOW DMKSYSOC DMKVDERR - PUT OUR 'ATTACH' ERROR MESSAGES DMKVDEDC - READ LABEL/ALLOCATION RECORD