Table of Contents

DMKVDA Abstract

Statistics

Type ASSEMBLE
Source Lines : 1,398
Fixes Applied : 21
Most Recent Version : Thursday, December 14, 1978
Last Fix ID : [HRC039DK]

Synopsis

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