Table of Contents

DMKTHI Source

References

Source Listing

DMKTHI.ASSEMBLE.txt
  1. THI TITLE 'DMKTHI (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT @V2B2698 00002000
  3. COPY OPTIONS @V2B2698 00003000
  4. COPY LOCAL OPTIONS @V2B2698 00004000
  5. DMKTHI CSECT @V2B2698 00005000
  6. USING SAVEAREA,R13 @V2B2698 00006000
  7. USING PSA,R0 @V2B2698 00007000
  8. USING VMBLOK,R11 @V2B2698 00008000
  9. MODID DC CL8'DMKTHI' @V2B2698 00009000
  10. EJECT 00010000
  11. *. 00011000
  12. * MODULE NAME - 00012000
  13. * 00013000
  14. * DMKTHI - GIVE DATA ON UTILIZATION OF AND CONTENTION FOR 00014000
  15. * MAJOR SYSTEM RESOURCES 00015000
  16. * 00016000
  17. * FUNCTION - 00017000
  18. * 00018000
  19. * TO HANDLE THE 'INDICATE' CONSOLE FUNCTION 00019000
  20. * 00020000
  21. * ATTRIBUTES - 00021000
  22. * 00022000
  23. * SERIALLY REUSABLE, PAGEABLE, CALLED VIA SVC 00023000
  24. * 00024000
  25. * ENTRY POINTS - 00025000
  26. * DMKTHIEN - TO PROCESS ALL FORMS OF INDICATE COMMAND 00026000
  27. * 00027000
  28. * ENTRY CONDITIONS - 00028000
  29. * 00029000
  30. * GPR9 - ADDRESS OF COMMAND LINE BUFFER 00030000
  31. * GPR11 - ADDRESS OF VMBLOK 00031000
  32. * GPR12 - ADDRESS OF ENTRY POINT 00032000
  33. * GPR13 - ADDRESS OF STANDARD SAVE AREA 00033000
  34. * 00034000
  35. * EXIT CONDITIONS - 00035000
  36. * 00036000
  37. * NONE 00037000
  38. * 00038000
  39. * CALLS TO OTHER ROUTINES - 00039000
  40. * 00040000
  41. * DMKCVTBD - TO CONVERT BINARY TO EBCDIC DECIMAL 00041000
  42. * DMKCVTBH - TO CONVERT BINARY TO EBCDIC HEX 00042000
  43. * DMKQCNWT - TO WRITE INDICATE RESPONSE TO USER 00043000
  44. * DMKSCNFD - TO LOOK FOR INDICATE PARAMETERS IN COMMAND FIELDS 00044000
  45. * DMKSCNVU - VIRTUAL DEVICE BLOCKS FROM VIRTUAL ADDRESS 00045000
  46. * DMKSCNRD - FULL REAL DEVICE ADDRESS FROM REAL DEVICE BLOCK 00046000
  47. * DMKFREE - TO OBTAIN STORAGE FOR REPLY MESSAGES 00047000
  48. * DMKFRET - TO RELEASE STORAGE 00048000
  49. * DMKERMSG - TO WRITE ERROR MESSAGES 00049000
  50. * DMKTMRPT - TO OBTAIN CURRENT UP TO DATE VALUE OF VMVTIME 00050000
  51. * 00051000
  52. * EXTERNAL REFERENCES - 00052000
  53. * 00053000
  54. EXTRN DMKSCHCU SMOOTHED WAIT TIME FOR 30 SEC CPU@V407577 00054100
  55. EXTRN DMKSCHCA SMOOTHED WAIT TIME FOR 30 SEC APU@V407577 00054200
  56. EXTRN DMKSCHRL RUNLIST ANCHOR @V407577 00054300
  57. EXTRN DMKSCHEL ELIGIBLE LIST ANCHORS @V407577 00054400
  58. EXTRN DMKSCHS1 SMOOTHED CPU CONTENTION, Q1 COUNT@V2B2698 00055000
  59. EXTRN DMKSCHS2 SMOOTHED CPU CONTENTION, Q2 COUNT@V2B2698 00056000
  60. EXTRN DMKSCHCO SMOOTHED CORE UTILIZATION @V2B2698 00057000
  61. EXTRN DMKSCHSC SMOOTHED SCHED CONTENTION RATIO @V2B2698 00058000
  62. EXTRN DMKSCHLI WAIT STATE SAMPLING INTERVAL @V2B2698 00059000
  63. EXTRN DMKCVTBD CONVERT FROM BINARY TO DECIMAL @V2B2698 00060000
  64. EXTRN DMKCVTBH CONVERT FROM BINARY TO HEX @V2B2698 00061000
  65. EXTRN DMKQCNWT WRITE MESSAGES TO USER @V2B2698 00062000
  66. EXTRN DMKSCNFD SEARCH FOR NEXT FIELD ON CMD LINE@V2B2698 00063000
  67. EXTRN DMKSCNVU OBTAIN VIRTUAL DEVICE BLOCKS @V2B2698 00064000
  68. EXTRN DMKSCNRD OBTAIN REAL DEVICE ADDRESS @V2B2698 00065000
  69. EXTRN DMKFREE OBTAIN FREE STORAGE @V2B2698 00066000
  70. EXTRN DMKFRET RELEASE STORAGE @V2B2698 00067000
  71. EXTRN DMKERMSG WRITE AN ERROR MESSAGE TO USER @V2B2698 00068000
  72. EXTRN DMKTMRPT OBTAIN UP-TO-DATE VTIME VALUE @V2B2698 00069000
  73. * 00070000
  74. * REGISTER USAGE - 00071000
  75. * 00072000
  76. * GPR9 - CHAINING THROUGH VMBLOK LIST 00073000
  77. * GPR6 - BRANCH AND LINK REG FOR SUBROUTINES 00074000
  78. * GPR4 - DSECT COVER REGISTER FOR REPLIES 00075000
  79. * GPR0-3 - WORK REGISTERS 00076000
  80. * 00077000
  81. * COMMAND FORMAT - 00078000
  82. * 00079000
  83. * +----------+---------+--------+ 00080000
  84. * | INDICATE | LOAD | | 00081000
  85. * | | ------- | | 00082000
  86. * | IND | USER | * | 00083000
  87. * | | |--- | 00084000
  88. * | | USER | USERID | 00085000
  89. * | | | | 00086000
  90. * | | QUEUES | | 00087000
  91. * | | | | 00088000
  92. * | | I/O | | 00089000
  93. * | | | | 00090000
  94. * | | PAGING | WAIT | 00091000
  95. * | | PAG | ---- | 00092000
  96. * | | | ALL | 00093000
  97. * +----------+---------+--------+ 00094000
  98. * 00095000
  99. * INTERPRETATION 00096000
  100. * 00097000
  101. * INDICATE LOAD PRODUCES THE RESPONSE AS FOLLOWS: 00098000
  102. * CPU-095% APU-040% Q1-05 Q2-02 STORAGE-042% RATIO-01.0 00099600
  103. * THE CPU AND APU FIELDS ARE OBTAINED FROM SMOOTHED INTERVAL 00099700
  104. * WAIT STATE MAINTAINED BY THE SCHEDULER. THE THIRD FIELD GIVES 00099800
  105. * THE SMOOTHED CONTENTIONS FOR CPU IN TERMS OF THE SMOOTHED 00099900
  106. * Q1 AND Q2 VALUES. 00100000
  107. * THE NEXT FIELD IN THE INDICATE RESPONSE IS A MEASURE OF THE 00104000
  108. * UTILIZATION OF MAIN HIGH SPEED STORAGE. IT IS CALCULATED 00105000
  109. * FROM THE RATIO BETWEEN THE SUM OF THE ESTIMATED WORKING SETS 00106000
  110. * OF THE MULTIPROGRAMMING SET, AND THE NUMBER OF PAGABLE PAGES 00107000
  111. * IN THE SYSTEM.(THE LATTER IS ROUND ABOUT 400 ON A 2MEGABYTE 00108000
  112. * SYSTEM. THE VALUE IS SMOOTHED AND EXPRESSED AS A PERCENTAGE. 00109000
  113. * THE SCHEDULER CONTENTION RATIO IS A MEASURE OF THE CONTENTION 00110000
  114. * FOR HIGH SPEED STORAGE, AND IS ARBITRARILY DEFINED AS 00111000
  115. * RATIO = (E+M)/M, WHERE E IS THE NUMBER OF USERS WAITING 00112000
  116. * TO BE ALLOCATED STORAGE SPACE AND THEREFORE TEMPORARILY 00113000
  117. * RESIDENT IN THE SCHEDULER 'ELIGIBLE' LISTS, AND M IS 00114000
  118. * THE NUMBER OF USERS ALREADY RESIDENT IN STORAGE, I.E. 00115000
  119. * THE MEMBERS OF THE MULTIPROGRAMMING SET. 00116000
  120. * THUS THE RATIO IS THE RATIO OF ACTIVE USERS TO BEING SERVICED 00117000
  121. * USERS, AND IS IDEALY 1.0 FOR OPTIMUM RESPONSE, WHEN THERE IS 00118000
  122. * ENOUGH MAIN STORAGE TO ACCOMMODATE ALL ACTIVE USERS. WHEN 00119000
  123. * SCR=1.5 AND M = 10, THEN 5 USERS ARE IN THE ELIGIBLE LISTS 00120000
  124. * WAITING FOR THE SCHEDULER TO ALLOCATE THEM STORAGE SPACE, AND 00121000
  125. * THE FULL DISCRIMINATION CAPABILITIES OF THE SCHEDULER MAY 00122000
  126. * BE EXCERCISED ON THOSE USERS. (SEE TR 75.0001 FOR DETAILS) 00123000
  127. * 00124000
  128. * THE PURPOSE OF THE INDICATE QUEUES OPTION IS TO PROVIDE A 00125100
  129. * DISPLAY OF THE ACTIVE USERS, THE QUEUES THEY OCCUPY, THEIR 00125200
  130. * CURRENT STATUS, AND THEIR MAIN STORAGE REQUIREMENTS. 00125300
  131. * THE RESPONSE IS ORDERED AS FOLLOWS: 00125400
  132. * 1. Q1 AND Q2 USERS IN ORDER OF RUNLIST PRIORITY 00125500
  133. * 2. ELIGIBLE LIST E1 IN ORDER OF SCHEDULING PRIORITY 00125600
  134. * 3. ELIGIBLE LIST E2 IN ORDER OF SCHEDULING PRIORITY 00125700
  135. * THE QUEUE INDICATORS ARE Q1, Q2, E1, OR E2. POSSIBLE STATUS 00125800
  136. * CONDITIONS ARE: RU...RUNUSER ON THE CPU, RA...RUNUSER ON THE 00125900
  137. * APU, PG...IN PAGEWAIT, IO...IN I/O WAIT, EX...IN INSTRUCTION 00126000
  138. * SIMULATION WAIT, PS...IN PSW WAIT, OR --...RUNNABLE AND JUST 00126100
  139. * WAITING FOR THE CPU. WHEN MUTIPLE STATUS CONDITIONS ARE 00126200
  140. * POSSIBLE, THE FIRST ENCOUNTERED IN THE ORDER INDICATED ABOVE 00126300
  141. * IS RECORDED IN THE REPLY. FOLLOWING THE STATUS INDICATION 00126400
  142. * FOR EACH USER ARE TWO FIELDS REPRESENTING THAT USER'S MAIN 00126500
  143. * STORAGE REQUIREMENT. THE FIRST FIELD IS THE NUMBER OF RESIDENT 00126600
  144. * PAGES AND THE SECOND IS THAT USER'S PROJECTED WORKING SET. 00126700
  145. * 00147000
  146. * THE PURPOSE OF THE INDICATE I/O OPTION IS TO PROVIDE INSIGHT 00148000
  147. * INTO THE CONDITIONS LEADING TO POSSIBLE I/O BOUNDNESS WITHIN 00149000
  148. * THE SYSTEM. THE RESPONSE GIVES THE USERID OF ALL THE USERS IN 00150000
  149. * THE I/O WAIT STATE AT THAT INSTANT OF TIME, AND THE REAL 00151000
  150. * DEVICE ADDRESS BEING WAITED ON. SINCE THE RESPONSE 00152000
  151. * IS A SNAP SHOT, THE COMMAND SHOULD BE USED SEVERAL TIMES 00153000
  152. * BEFORE A CONDITION MAY BE THOUGHT TO BE PERSISTENT, AND 00154000
  153. * THEN IT IS AN INDICATION THAT THE SEEKS OPTION OF VM 00155000
  154. * MONITOR SHOULD BE RUN IN ORDER TO CONDUCT A THOROUGH 00156000
  155. * INVESTIGATION OF THE SUGGESTED CONGESTION. 00157000
  156. * 00158000
  157. * THE INDICATE PAGING OPTION IS TO CHECK IF OVERFLOWING OF THE 00159000
  158. * 2305 (OR FIXED HEAD DEVICE) IS CONTRIBUTING TO A PERSISTENT 00160000
  159. * PAGE WAIT PROBLEM. THE RESPONSE GIVES ALL USERS IN PAGE 00161000
  160. * WAIT AND THE COUNTS OF THE NUMBERS OF PAGES ALLOCATED ON 00162000
  161. * DRUM AND ON DISK. IF A USER IS PAGING PRIMARILY FROM DISK 00163000
  162. * HE WILL BE RUNNING SLOWER THAN IF HE WERE PAGING FROM DRUM 00164000
  163. * AND IF THERE IS A LOW LEVEL OF MULTIPROGRAMMING, THIS MAY 00165000
  164. * FORCE HIGH SYSTEM PAGE WAIT TIMES. OF COURSE IF A USER IS 00166000
  165. * PAGING ON DISK, YOU WOULD LIKE TO KNOW WHO HAS FILLED UP THE 00167000
  166. * DRUM, AND THIS IS THE PURPOSE OF THE INDICATE PAGING ALL 00168000
  167. * OPTION WHICH GIVES THE PAGE RESIDENCY DATA FOR ALL THE USERS 00169000
  168. * CURRENTLY LOGGED ONTO THE SYSTEM. 00170000
  169. * 00171000
  170. * THE PURPOSE OF THE INDICATE USER OPTION IS TO ALLOW 00172000
  171. * USERS TO FIND OUT MORE ABOUT THE ACTIVITY OF THEIR 00173000
  172. * VIRTUAL MACHINES IN TERMS OF THE RESOURCES USED 00174000
  173. * AND OCCUPIED AND EVENTS THAT HAVE TAKEN PLACE. 00175000
  174. * USERS WITH ONLY G CLASS AUTHORITY MAY ONLY ACCESS 00176000
  175. * DATA FROM THEIR OWN VMBLOK, USERS WITH E CLASS 00177000
  176. * AUTHORITY MAY ACCESS DATA FROM ANY VMBLOK 00178000
  177. * 00179000
  178. * THE DATA OBTAINED IS AS FOLLOWS: 00180000
  179. * PAGES: RES-010 WS-010 READS=001234 WRITES=000645 DISK-0128 DRUM-0000 00181000
  180. * VTIME=000:59 TTIME=001:35 SIO=000099 RDR-000009 PRT-000000 PCH-000000 00182000
  181. * 00183000
  182. * 00184000
  183. * OPERATION 00185000
  184. * 00186000
  185. * 1. CALL DMKSCNFD TO CHECK FOR ARGUMENTS, IF NONE FOUND 00187000
  186. * ASSUME PROCESSING FOR INDICATE ONLY 00188000
  187. * 00189000
  188. * IF 'LOAD' OR DEFAULT OF NO PARAMETER FOUND GOTO PART 2 00190000
  189. * 00191000
  190. * IF 'I/O' FOUND GO TO SECTION WHICH LOOKS FOR RUNNABLE 00192000
  191. * USERS IN I/O WAIT STATE, PART 3. 00193000
  192. * 00194000
  193. * IF 'PAGING' FOUND GO TO SECTIONS TO HANDLE 'IND PAGING' 00195000
  194. * FUNCTIONS, PARTS 4 AND 5. 00196000
  195. * 00197000
  196. * IF 'USER' FOUND HANDLE USER RESOURCE REQUEST FUNCTION 00198000
  197. * PART 6. 00199000
  198. * 00200000
  199. * IF 'QUEUES' FOUND DISPLAY CURRENT MULTIPROGRAMMING SET 00201000
  200. * PART 7. 00202000
  201. * 00203000
  202. * IF INVALID PARAMS FOUND SEND CANNED ERROR MSGS AND EXIT 00204000
  203. * 00205000
  204. * 2. INDICATE LOAD PROCESSING: 00206000
  205. * USING REPLY MESSAGE DSECT GET BUFFER FOR REPLY AND 00207000
  206. * MOVE IN THE SKELETON REPLY MESSAGE, THEN PATCH REPLY 00208000
  207. * WITH INDICATE COMPONENT VALUES AS FOLLOWS: 00209000
  208. * PICK UP SMOOTHED WAIT STATE NUMBERS FROM SCHEDULER, 00210100
  209. * CONVERT TO PERCENTAGE IN PRINTABLE HEX. AND MOVE INTO 00211000
  210. * REPLY. GET SMOOTHED NUMBERS OF USERS IN Q1 AND Q2 FROM 00212000
  211. * DMKSCH CONVERT TO HEX AND MOVE INTO MESSAGE. 00213000
  212. * GET SMOOTHED CORE UTILIZATION AND SCHEDULER CONTENTION 00214000
  213. * RATIO NUMBERS, CONVERT TO HEX AND MOVE INTO REPLY 00215000
  214. * CALL DMKQCNWT TO SEND REPLY TO USER, FREE BUFFER AND EXIT 00216000
  215. * 00217000
  216. * 3. INDICATE I/O PROCESSING: 00218000
  217. * USING REPLY MESSAGE DSECT GET BUFFER FOR REPLY AND 00219000
  218. * BUILD REPLY FIELD BY FIELD AS FOLLOWS: 00220000
  219. * SCAN VMBLOK CHAIN LOOKING FOR IN Q NOT RUNNABLE 00221000
  220. * USERS WHO ARE IN I/O WAIT. WHEN ONE IS FOUND 00222000
  221. * PICK UP FROM HIS VMBLOK THE VIRTUAL ADDRESS OF THE DEVICE 00223000
  222. * FOR WHICH HE LAST ISSUED A VIRTUAL I/O REQUEST. CALL 00224000
  223. * DMKSCNVU TO LOCATE THE VIRTUAL DEVICE BLOCK ADDRESS 00225000
  224. * AND THENCE THE POINTER TO THE CORRESPONDING REAL 00226000
  225. * DEVICE ADDRESS. THEN USEDMKSCNRD 00227000
  226. * TO GET THE FULL REAL DEVICE ADDRESS AND DMKCVTBH 00228000
  227. * TO CONVERT THE RESULT TO EBCDIC HEX FOR INSERTION IN THE 00229000
  228. * REPLY MESSAGE. ADD THE USERID FOR WHOM THE I/O IS 00230000
  229. * BEING PERFORMED. 00231000
  230. * 00232000
  231. * EACH LINE OF THE REPLY MESSAGE MAY CONTAIN A MAXIMUM 00233000
  232. * OF 5 FIELDS (USERID AND REAL DEVICE ADDRESS IN EACH FIELD) 00234000
  233. * AS EACH LINE IS FILLED IT IS STACKED IN A BUFFER ONTO 00235000
  234. * THE USER'S VMBLOK IN A CHAIN WHOSE ANCHOR POINT IS THE 00236000
  235. * VMSTKO FIELD OF THE VMBLOK. WHEN THE LAST VMBLOK HAS 00237000
  236. * BEEN SCANNED, THE LAST PARTIALLY FILLED REPLY LINE 00238000
  237. * IS STACKED UP AND AN EXIT IS MADE. 00239000
  238. * 00240000
  239. * 4. INDICATE PAGING PROCESSING: 00241000
  240. * USING A REPLY MESSAGE DSECT OBTAIN THE APPROPRIATE SIZED 00242000
  241. * BUFFER AND BUILD AS MANY AS 5 FIELDS INTO REPLY AS FOLLOWS 00243000
  242. * WHEN THE 'PAGING' PARAMETER IS ENCOUNTERED, A CALL TO 00244000
  243. * DMKSCNFD IS MADE TO CHECK FOR THE 'WAIT' OR 'ALL PARAMETER 00245000
  244. * IF NEITHER ARE FOUND, THE DEFAULT IS 'WAIT' FOR WHICH 00246000
  245. * PROCESSING IS AS FOLLOWS: 00247000
  246. * THE VMBLOK CHAIN IS SCANNED LOOKING FOR IN Q 00248000
  247. * USERS, WHO ARE NOT RUNNABLE AND ARE IN PAGE WAIT. WHEN 00249000
  248. * ONE IS FOUND, A FIELD IS ADDED TO THE REPLY MESSAGE 00250000
  249. * CONTAINING THE USERID AND A COUNT OF THE NUMBER OF PAGES 00251000
  250. * RESIDENT ON DRUM AND ON DISK. 00252000
  251. * 00253000
  252. * 5. INDICATE PAGING ALL PROCESSING: 00254000
  253. * WHEN THE 'PAGING ALL' PARAMTERS ARE FOUND, THE REPLY 00255000
  254. * MESSAGE CONSTRUCTED CONTAINS INFORMATION ON THE PAGE 00256000
  255. * RESIDENCY COUNTS OF ALL USERS LOGGED ONTO THE SYSTEM. 00257000
  256. * 00258000
  257. * EACH LINE OF REPLY TO THE 'INDICATE PAGING ALL' COMMAND 00259000
  258. * MAY CONTAIN A MAXIMUM OF 4 FIELDS, EACH CONTAINING THE 00260000
  259. * USERID AND 3CHAR. DRUM RESIDENCY AND DISK RESIDENCY 00261000
  260. * PAGE COUNT SEPARATED BY A COLON; THE STACK 00262000
  261. * PROCEEDURE IS USED AS BEFORE TO ACCUMULATE THE 00263000
  262. * REPLY MESSAGES. 00264000
  263. * 00265000
  264. * 6. INDICATE USER COMMAND PROCESSING: 00266000
  265. * WHEN THE 'USER' PARAMETER IS ENCOUNTERED, THEN THE '*' IS 00267000
  266. * ALLOWED BY ANY CLASS OF USER, AND IS THE DEFAULT. HOWEVER 00268000
  267. * ONLY PRIVILEGED CLASSE USERS E ARE 00269000
  268. * ALLOWED TO ACCESS VMBLOK DATA FROM OTHER USERS 00270000
  269. * OF THE SYSTEM. DATA ACCORDING TO THE CONTENTS 00271000
  270. * DESCRIBED ABOVE ARE CONVERTED TO DECIMAL AND 00272000
  271. * STACKED ON THE USERS VMBLOK FOR REPLY. 00273000
  272. * 00274000
  273. * 7. INDICATE QUEUES COMMAND PROCESSING: 00275000
  274. * THE'QUEUES' PARAMETER MAY ONLY BE USED BY PRIVILEGED USERS 00276000
  275. * A SCAN IS MADE OF THE RUNLIST AND ELIGIBLE LISTS AND 00277100
  276. * DATA RELATING TO THOSE USERS ARE DISPLAYED. THE DATA 00277200
  277. * INCLUDE USERID, QUEUE INDICATOR (Q1,Q2,E1,E2), STATUS 00277300
  278. * INDICATOR (RU, RA, PG, IO, EX, PS, OR --), 00277400
  279. * PAGES RESIDENT AND MOST RECENT WORKING SET SIZE ESTIMATE. 00281000
  280. * THE STACK SUBROUTINE IS USED TO ADD THE REPLY BUFFERS TO 00282000
  281. * THE REQUESTOR'S VMBLOK. SUBSEQUENTLY DMKCFM OUTPUTS THE 00283000
  282. * MESSAGES AND FREES UP THE BUFFER SPACE. 00284000
  283. *. 00285000
  284. DMKTHIEN RELOC @V2B2698 00286000
  285. CALL DMKSCNFD LOOK FOR OPTION @V2B2698 00287000
  286. BNZ THILOAD DEFAULT IS INDICATE LOAD @V2B2698 00288000
  287. LR R2,R0 PARAMETER LENGTH @V2B2698 00289000
  288. CL R2,F8 GREATER THAN MAX. ALLOWED? @V2B2698 00290000
  289. BH THI003E YES-INVALID OPTION @V2B2698 00291000
  290. BCTR R2,0 LESS ONE FOR COMPARE @V2B2698 00292000
  291. LA R3,PARMTBL PARAMETER SCAN TABLE @V2B2698 00293000
  292. LA R4,PARMENT LENGTH OF ONE ENTRY @V2B2698 00294000
  293. LA R5,PARMEND LAST ENTRY IN TABLE @V2B2698 00295000
  294. SPACE 00296000
  295. THISRCH EQU * SCAN TABLE FOR FNCTN PARM MATCH @V2B2698 00297000
  296. EX R2,CLCR1R3 'CLC 0(*-*,R1),0(R3)' @V2B2698 00298000
  297. BNE NEXSRCH NO MATCH - SKIP TO NEXT ENTRY @V2B2698 00299000
  298. CLM R2,1,9(R3) CHECK FOR MINIMUM ABBREVIATION @V2B2698 00300000
  299. BL NEXSRCH TOO SMALL - SKIP TO NEXT ENTRY @V2B2698 00301000
  300. SLR R6,R6 @V2B2698 00302000
  301. ICM R6,8,VMCLEVEL CHECK PRIVILEGED CLASS...MAY BE @V2B2698 00303000
  302. N R6,8(0,R3) RESTRICTED @V2B2698 00304000
  303. BZ THI003E INVALID OPTION IF IT IS @V2B2698 00305000
  304. LH R4,10(0,R3) CHECKS OUT PICK UP BRANCH ADDRESS@V2B2698 00306000
  305. B DMKTHI(R4) GO TO FUNCTIONAL SUBROUTINE @V2B2698 00307000
  306. NEXSRCH EQU * @V2B2698 00308000
  307. BXLE R3,R4,THISRCH ON TO NEXT TABLE ENTRY @V2B2698 00309000
  308. B THI003E NO MATCH, INVALID OPTION @V2B2698 00310000
  309. SPACE 00311000
  310. PARMTBL DS 0F FUNCTION PARAMETER TABLE @V2B2698 00312000
  311. DC C'LOAD ',AL1(E+G,3),AL2(THILOAD-DMKTHI) @V2B2698 00313000
  312. DC C'USER ',AL1(E+G,3),AL2(THIUSER-DMKTHI) @V2B2698 00314000
  313. DC C'QUEUES ',AL1(E,0),AL2(THIQUE-DMKTHI) @V2B2698 00315000
  314. DC C'PAGING ',AL1(E,2),AL2(THIPAG-DMKTHI) @V2B2698 00316000
  315. PARMEND DC C'I/O ',AL1(E,2),AL2(THIIO-DMKTHI) @V2B2698 00317000
  316. PARMENT EQU *-PARMEND LENGTH OF 1 ENTRY @V2B2698 00318000
  317. SPACE 00319000
  318. CLCR1R3 CLC 0(*-*,R1),0(R3) EX'ED COMPARE FOR PARM CHECK @V2B2698 00320000
  319. SPACE 00321000
  320. USING LOADMSGD,R4 LOAD MESSAGE DSECT @V2B2698 00322000
  321. THILOAD LA R0,LOADMSGL FIRST GET NO. DBL WORDS @V2B2698 00323000
  322. CALL DMKFREE GET THE STORAGE @V2B2698 00324000
  323. LR R4,R1 THE DSECT COVER REGISTER @V2B2698 00325000
  324. LA R1,LOADMSGC GET BYTE COUNT OF REPLY MESSAGE @V2B2698 00326000
  325. BCTR R1,0 LESS 1 FOR EXECUTED MOVE @V2B2698 00327000
  326. EX R1,MVLODMSG MOVE SKELETON MESSAGE TO BUFFER @V2B2698 00328000
  327. L R2,=A(DMKSCHCU) ADDR OF SMOOTH WAIT VALUE TO @V2B2698 00329000
  328. * NEAREST 1/4 SEC 00330100
  329. SLR R7,R7 CLEAR TO INDICATE CPU PASS @V407577 00330200
  330. CVTLOAD L R3,0(R2) LOAD THE SMOOTHED WAIT TIME @V407577 00330300
  331. L R1,=A(DMKSCHLI) SAMPLING INTERVAL IN SECONDS @V2B2698 00331000
  332. L R5,0(R1) @V2B2698 00332000
  333. SLL R5,2 TO NEAREST 1/4 SEC ALSO @V2B2698 00333000
  334. LR R1,R5 @V2B2698 00334000
  335. SR R1,R3 GET INTERVAL CPU IN 1/4 SECONDS @V2B2698 00335000
  336. LTR R1,R1 UNLIKELY ZERO FOR NO ACTIVITY @V2B2698 00336000
  337. BZ ZEROUT BUT WE HIT IT ANYWAY @V2B2698 00337000
  338. SR R0,R0 CLEAR FOR MULT AND DIVIDE @V2B2698 00338000
  339. M R0,=F'100' BY 100 FOR PERCENT @V2B2698 00339000
  340. LR R2,R5 @V2B2698 00340000
  341. DR R0,R2 DIVIDE BY SAMPLE INTERVAL @V2B2698 00341000
  342. SRL R5,1 GET HALF SAMPLING INTERVAL @V2B2698 00342000
  343. CR R0,R5 IS REMAINDER SIGNIFICANT (>1/2) @V2B2698 00343000
  344. BNH ZEROUT NO, SKIP CORRECTION @V2B2698 00344000
  345. LA R1,1(,R1) YES, ADD 1 TO RESULT @V2B2698 00345000
  346. ZEROUT BAL R8,CONVERT CONVERT TO DECIMAL @V2B2698 00346000
  347. LTR R7,R7 IS THIS THE CPU WAIT TIME @V407577 00347100
  348. BNZ APUDATA NO..MUST BE APU WAIT TIME @V407577 00347200
  349. MVC CPUTIL,TEMPHOLD+5 FILL IN CPU PERCENT LOAD @V407577 00347300
  350. L R7,=A(DMKSCHCA) LOAD R7 TO INDICATE APU PASS @V407577 00347400
  351. LR R2,R7 AND POINT TO THE APU WAIT TIME @V407577 00347500
  352. B CVTLOAD NOW GO COMPUTE APU TIMES @V407577 00347600
  353. APUDATA MVC APUTIL,TEMPHOLD+5 FILL IN APU PERCENT LOAD @V407577 00347700
  354. L R2,=A(DMKSCHS1) SMOOTHED Q1*1024 @V2B2698 00348000
  355. L R1,0(R2) @V2B2698 00349000
  356. SRL R1,10 BACK TO NEAREST INTERGER @V2B2698 00350000
  357. BAL R8,CONVERT DECIMAL FOR REPLY @V2B2698 00351000
  358. MVC NUMQ1,TEMPHOLD+6 AND MOVE INTO REPLY BUFFER @V2B2698 00352000
  359. L R2,=A(DMKSCHS2) SMOOTHED NO OF Q2 USERS * 1024 @V2B2698 00353000
  360. L R1,0(R2) @V2B2698 00354000
  361. SRL R1,10 BACK TO NEAREST INTEGER FOR REPLY@V2B2698 00355000
  362. BAL R8,CONVERT DECIMAL FOR REPLY @V2B2698 00356000
  363. MVC NUMQ2,TEMPHOLD+6 @V2B2698 00357000
  364. L R1,=A(DMKSCHCO) ADDR CORE UTIL FRACTION*1024 @V2B2698 00358000
  365. L R1,0(R1) @V2B2698 00359000
  366. SR R0,R0 @V2B2698 00360000
  367. M R0,=F'100' CONVERT TO PERCENTAGE*1024 @V2B2698 00361000
  368. SRL R1,10 /1024 TO GET PURE PERCENTAGE @V2B2698 00362000
  369. BAL R8,CONVERT @V2B2698 00363000
  370. MVC CORUTIL,TEMPHOLD+5 @V2B2698 00364000
  371. L R1,=A(DMKSCHSC) SCHED CONTENTION RATIO*1024 @V2B2698 00365000
  372. L R1,0(R1) @V2B2698 00366000
  373. SR R0,R0 @V2B2698 00367000
  374. M R0,=F'100' FOR ACCURACY TO 1 DEC PLACE @V2B2698 00368000
  375. SRL R1,10 /1024 TO GET BACK TO BASE @V2B2698 00369000
  376. BAL R8,CONVERT @V2B2698 00370000
  377. MVC QUTIL,TEMPHOLD+4 PATCH Q CONT RATIO INFO @VA04300 00371500
  378. MVC QUTILDEC,TEMPHOLD+6 MSG. INSERTING DECIMAL PT @V2B2698 00372000
  379. LA R0,LOADMSGC MESSAGE SIZE IN BYTES @V2B2698 00373000
  380. LR R1,R4 LOCATION OF MESSAGE BUFFER @V2B2698 00374000
  381. LA R3,LOADMSGL DOUBLE WORDS OF BUFFER TO FRET @V2B2698 00375000
  382. CALL DMKQCNWT,PARM=NORET+DFRET @V2B2698 00376000
  383. THIEXIT EXIT @V2B2698 00377000
  384. SPACE 00378000
  385. MVLODMSG MVC 0(*-*,R4),LODMSGSK SKELETON LOAD MESSAGE @V2B2698 00379000
  386. MVUSRMS1 MVC 0(*-*,R4),USERMSG1 SKELETON USER MESSAGE LINE 1 @V2B2698 00380000
  387. MVUSRMS2 MVC 0(*-*,R4),USERMSG2 SKELETON USER MESSAGE LINE 2 @V2B2698 00381000
  388. DROP R4 @V2B2698 00382000
  389. SPACE 00383000
  390. CONVERT CALL DMKCVTBD CONVERT BIN NUMB IN R1 TO DECIMAL@V2B2698 00384000
  391. STM R0,R1,TEMPHOLD SAVE RESULT FOR MVC @V2B2698 00385000
  392. BR R8 RETURN TO BALER @V2B2698 00386000
  393. EJECT 00387000
  394. THIIO LA R0,IOPGMSGL 64 BYTES OR 4 13 BYTE FIELDS 1 12@V2B2698 00388000
  395. CALL DMKFREE GET BUFFER @V2B2698 00389000
  396. ST R1,SAVEWRK1 START OF EACH REPLY @V2B2698 00390000
  397. LA R3,64(R1) END OF MAX REPLY MESSAGE @V2B2698 00391000
  398. ST R3,SAVEWRK2 SAVE FOR LATER COMPARE @V2B2698 00392000
  399. LR R4,R1 @V2B2698 00393000
  400. SR R10,R10 @V2B2698 00394000
  401. ST R10,SAVEWRK3 CLEAR STACK COUNTER @V2B2698 00395000
  402. LR R9,R11 HOOK INTO VMBLOK CHAIN, THIS USER@V2B2698 00396000
  403. MOREUSR2 DS 0H @VA07710 00397500
  404. TM VMDSTAT-VMBLOK(R9),VMRUN IS HE RUNNABLE @V2B2698 00399000
  405. BO NXTUSR2 YES, COULDN'T BE IN A WAIT STATE @V2B2698 00400000
  406. TM VMRSTAT-VMBLOK(R9),VMIOWAIT IS HE IN I/O WAIT @V2B2698 00401000
  407. BO BALFIOB YES, GO TO SUBROUTINE BAL @V2B2698 00402000
  408. TM VMDSTAT-VMBLOK(R9),VMINQ IS THIS USER IN A QUEUE@VA07710 00402330
  409. BZ NXTUSR2 NO, NOT INTERESTED @VA07710 00402660
  410. TM VMRSTAT-VMBLOK(R9),VMPSWAIT WAIT PSW WHILE IN Q @V2B2698 00403000
  411. BZ NXTUSR2 NO, TRY NEXT IN CHAIN @V2B2698 00404000
  412. BALFIOB BAL R6,FINDRDEV YES, FIND RDEV AND ADD TO REPLY @V2B2698 00405000
  413. NXTUSR2 L R9,VMPNT-VMBLOK(,R9) USE FORWARD PTR TO GET NEXT@V2B2698 00406000
  414. CR R9,R11 END OF VMBLOK LOOP YET @V2B2698 00407000
  415. BNE MOREUSR2 NO, MORE USERS YET @V2B2698 00408000
  416. ENDLOOP2 MVC PATCH(4),=C'I/O ' PATCH WARNING MESSAGE @V2B2698 00409000
  417. ENDLOOPC C R4,SAVEWRK1 STILL ONLY AT START OF BUFFER @V2B2698 00410000
  418. BE FRETBUF YES, HAVEN'T STARTED FILLING YET @V2B2698 00411000
  419. BAL R6,STACK NO, STACK WHAT IS SO FAR FILLED @V2B2698 00412000
  420. FRETBUF LA R0,IOPGMSGL @V2B2698 00413000
  421. L R1,SAVEWRK1 @V2B2698 00414000
  422. CALL DMKFRET RELEASE REPLY BUFFER @V2B2698 00415000
  423. L R10,SAVEWRK3 FIND OUT IF WE HAVE AT LEAST ONE @V2B2698 00416000
  424. LTR R10,R10 USER IN WAIT STATE @V2B2698 00417000
  425. BNZ THIEXIT YES NO PANICK MESSAGE @V2B2698 00418000
  426. LA R0,NOIOMSGL WE DON'T HAVE A SINGLE ONE @V2B2698 00419000
  427. LA R1,NOIOMSG GET SIZE AND LOCATION OF MESSAGE @V2B2698 00420000
  428. CALL DMKQCNWT,PARM=NORET AND SEND IT @V2B2698 00421000
  429. B THIEXIT AND RETURN @V2B2698 00422000
  430. SPACE 00423000
  431. FINDRDEV LR R11,R9 SUBROUTINE INPUT CONDITION @V2B2698 00424000
  432. ST R6,SAVEWRK6 RETURN ADDRESS WILL BE DESTROYED @V2B2698 00425000
  433. LH R1,VMACTDEV VIRT ADDRESS OF MOST RECENT V-IO @V2B2698 00426000
  434. CALL DMKSCNVU GET VIRTUAL DEVICE BLOCKS @V2B2698 00427000
  435. L R11,SAVER11 RESTORE CALLERS VMBLOK ADDR @V2B2698 00428000
  436. BZ GOTDEV WE DID GET SOMETHING AFTERALL @V2B2698 00429000
  437. NORDEV EQU * @VA09251 00429500
  438. MVC TEMPHOLD+1(3),=C'---' DEV ADDRESS NOT AVAIL @V2B2698 00430000
  439. B NODEV @V2B2698 00431000
  440. SPACE 00432000
  441. GOTDEV L R8,VDEVREAL-VDEVBLOK(,R8) POINTER TO REAL DEV @V2B2698 00433000
  442. LTR R8,R8 IS THERE A RDEVICE ? @VA09251 00433300
  443. BZ NORDEV NO @VA09251 00433600
  444. CALL DMKSCNRD GET FULL REAL DEVICE ADDRESS @V2B2698 00434000
  445. CALL DMKCVTBH CONVERT TO EBCDIC HEX @V2B2698 00435000
  446. ST R1,TEMPHOLD SAVE FOR MOVE @V2B2698 00436000
  447. NODEV L R6,SAVEWRK6 GOOD TIME TO RESTORE RET ADDRESS @V2B2698 00437000
  448. USING IOMSGD,R4 I/O REPLY MESSAGE DSECT @V2B2698 00438000
  449. MVC IRADD,TEMPHOLD+1 WE FINALLY GOT THERE @V2B2698 00439000
  450. MVC IUSERID,VMUSER-VMBLOK(R9) USERID INTO MESSAGE @V2B2698 00440000
  451. MVI ISEP1,C' ' BLANK SEPARATOR @V2B2698 00441000
  452. LR R5,R4 SAVE FOR END OF FIELD SEPARATOR @V2B2698 00442000
  453. LA R4,13(R4) INDEX TO NEXT MESSAGE FIELD @V2B2698 00443000
  454. C R4,SAVEWRK2 END OF THIS BUFFER YET @V2B2698 00444000
  455. BNL STACK YES, STACK THIS MESSAGE AND RESET@V2B2698 00445000
  456. MVI ISEP2-IOMSGD(R5),C' ' END SEP FOR LAST FIELD @V2B2698 00446000
  457. BR R6 NO, SPACE FOR MORE FIELDS YET @V2B2698 00447000
  458. DROP R4 @V2B2698 00448000
  459. EJECT 00449000
  460. THIPAG CALL DMKSCNFD LOOK FOR ANY PARAMTER @V2B2698 00450000
  461. BNZ THIPGONL NONE, THI PAGING ONLY @V2B2698 00451000
  462. CL R0,F4 MAY NOT BE MORE THAN 4 CHARS. @V2B2698 00452000
  463. BH THI003E INVALID OPTION @V2B2698 00453000
  464. CL R0,F3 AND NOT LESS THAN 3 CHARS. @V2B2698 00454000
  465. BL THI003E INVALID OPTION @V2B2698 00455000
  466. BH CLWAIT MUST BE WAIT IF ITS ANYTHING @V2B2698 00456000
  467. CLC =C'ALL',0(R1) IS IT ALL? @V2B2698 00457000
  468. BE THIPGALL FINE, HANDLE 'THI PAGING ALL' @V2B2698 00458000
  469. B THI003E GARBAGE IN, GARBAGE OUT. @V2B2698 00459000
  470. SPACE 00460000
  471. CLWAIT CLC =C'WAIT',0(R1) IS IT WAIT? @V2B2698 00461000
  472. BNE THI003E INVALID OPTION @V2B2698 00462000
  473. THIPGONL LA R0,IOPGMSGL 67 BYTES OR 3 17 BYTE FIELDS 1 16@V2B2698 00463000
  474. CALL DMKFREE GET BUFFER @V2B2698 00464000
  475. ST R1,SAVEWRK1 START OF EACH REPLY @V2B2698 00465000
  476. LA R3,67(R1) END OF MAX REPLY MESSAGE @V2B2698 00466000
  477. ST R3,SAVEWRK2 SAVE FOR LATER COMPARE @V2B2698 00467000
  478. LR R4,R1 @V2B2698 00468000
  479. SR R10,R10 @V2B2698 00469000
  480. ST R10,SAVEWRK3 CLEAR STACK COUNTER @V2B2698 00470000
  481. LR R9,R11 START INTO VMBLOK CHAIN, USER @V2B2698 00471000
  482. MOREUSR3 TM VMDSTAT-VMBLOK(R9),VMINQ IS HE EVEN IN Q @V2B2698 00472000
  483. BZ NXTUSR3 NO, NOT AT ALL INTERESTED @V2B2698 00473000
  484. TM VMDSTAT-VMBLOK(R9),VMRUN YA, IS HE STIL RUNABLE @V2B2698 00474000
  485. BO NXTUSR3 YA, SO CAN'T BE IN ANY WAIT STATE@V2B2698 00475000
  486. TM VMRSTAT-VMBLOK(R9),VMPGWAIT IS HE IN PAGE WAIT @V2B2698 00476000
  487. BZ NXTUSR3 NO, TRY NEXT IN CHAIN @V2B2698 00477000
  488. BAL R6,BLDPMSG YES, PUT PAGE RES DATA IN MSG @V2B2698 00478000
  489. NXTUSR3 L R9,VMPNT-VMBLOK(,R9) GET FORWARD POINTER @V2B2698 00479000
  490. CR R9,R11 BACK AT START OF LOOP YET @V2B2698 00480000
  491. BNE MOREUSR3 NO, MORE TO COME @V2B2698 00481000
  492. ENDLOOP3 MVC PATCH(4),=C'PAGE' PATCH WARNING MESSAGE @V2B2698 00482000
  493. B ENDLOOPC JOIN COMMON CODE TO END UP @V2B2698 00483000
  494. SPACE 00484000
  495. USING PAGMSGD,R4 @V2B2698 00485000
  496. BLDPMSG UNPK 0(5,R4),VMPDRUM-VMBLOK(3,R9) DRUM RES COUNT @V2B2698 00486000
  497. MVC PDRUM,1(R4) SELECT CHARACTERS OF INTEREST @V2B2698 00487000
  498. * ONLY 00488000
  499. TR PDRUM,ABX-240 TRANSLATE A THRU F CHARS @V2B2698 00489000
  500. MVI PSEP1,C' ' BLANK SEPARATOR @V2B2698 00490000
  501. MVI PCOLON,C':' BETWEEN DRUM AND DISK COUNT @V2B2698 00491000
  502. UNPK 0(5,R4),VMPDISK-VMBLOK(3,R9) DISK RES COUNT @V2B2698 00492000
  503. MVC PDISK,1(R4) SELECT ONLY CHARACTERS OF @V2B2698 00493000
  504. * INTEREST 00494000
  505. TR PDISK,ABX-240 TRANSLATE A THRU F CHARS @V2B2698 00495000
  506. MVC PUSERID,VMUSER-VMBLOK(R9) ADD USERID TO MESSAGE @V2B2698 00496000
  507. LR R5,R4 MAY BE SPACE FOR FIELD SEPARATOR @V2B2698 00497000
  508. LA R4,17(R4) INDEX TO NEXT MESSAGE FIELD @V2B2698 00498000
  509. C R4,SAVEWRK2 END OF BUFFER YET @V2B2698 00499000
  510. BNL STACK YES, STACK THIS MSG AND RESET @V2B2698 00500000
  511. MVI PSEP2-PAGMSGD(R5),C' ' NO, SEP FOR LAST FIELD @V2B2698 00501000
  512. BR R6 AND SPACE FOR MORE FIELDS YET @V2B2698 00502000
  513. DROP R4 @V2B2698 00503000
  514. SPACE 00504000
  515. THIPGALL LA R0,IOPGMSGL 67 BYTES OR 3 17 BYTE FIELDS 1 16@V2B2698 00505000
  516. CALL DMKFREE GET BUFFER @V2B2698 00506000
  517. ST R1,SAVEWRK1 START OF EACH REPLY @V2B2698 00507000
  518. LA R3,67(R1) END OF MAX REPLY MESSAGE @V2B2698 00508000
  519. ST R3,SAVEWRK2 SAVE FOR LATER COMPARE @V2B2698 00509000
  520. LR R4,R1 @V2B2698 00510000
  521. LA R10,1 MUST BE AT LEAST 1 USER IN CHAIN @V2B2698 00511000
  522. ST R10,SAVEWRK3 SET STACK COUNTER @V2B2698 00512000
  523. LR R9,R11 START WITH CALLER @V2B2698 00513000
  524. NXTUSER BAL R6,BLDPMSG GET PAGE RES DATA FOR THIS USER @V2B2698 00514000
  525. L R9,VMPNT-VMBLOK(,R9) NEXT VMBLOK PLEASE... @V2B2698 00515000
  526. CR R9,R11 BACK AT START OF LOOP YET @V2B2698 00516000
  527. BNE NXTUSER NO, GET DATA FOR THIS USER @V2B2698 00517000
  528. L R9,ASYSVM YES, SYSTEM HAS SPACE TOO @V2B2698 00518000
  529. BAL R6,BLDPMSG SO LETS INCLUDE ITS CONTRIBUTION @V2B2698 00519000
  530. B ENDLOOPC DONE, SEND LAST BUFFER @V2B2698 00520000
  531. EJECT 00521000
  532. STACK L R3,SAVEWRK1 START OF BUFFER @V2B2698 00522000
  533. LR R7,R3 POINTER FOR LATER MOVE @V2B2698 00523000
  534. C R4,SAVEWRK2 ARE WE HERE BECAUSE OF FULL BUFF @V2B2698 00524000
  535. BL NODEC NO, R4 IS EXACTLY RIGHT @V2B2698 00525000
  536. BCTR R4,R0 YES, R4 IS 1 TOO BIG, DECR COUNT @V2B2698 00526000
  537. NODEC SR R4,R3 BYTE COUNT OF MESSAGE @V2B2698 00527000
  538. LA R0,7(R4) ROUND UP TO FULL DBL WORD @V2B2698 00528000
  539. SRL R0,3 CONVERT TO DBL WORDS @V2B2698 00529000
  540. A R0,F1 PLUS 1 FOR HEADER @V2B2698 00530000
  541. CALL DMKFREE GET STACK BUFFER @V2B2698 00531000
  542. STH R4,4(R1) MESSAGE SIZE AND BUFFER SIZE @V2B2698 00532000
  543. STH R0,6(R1) INTO HEADER @V2B2698 00533000
  544. BCTR R4,R0 LESS 1 FOR EXECUTED MOVE @V2B2698 00534000
  545. EX R4,MVCSTK MESSAGE INTO STACK BUFFER @V2B2698 00535000
  546. SR R0,R0 @V2B2698 00536000
  547. ST R0,0(R1) NEW LAST BUFFER IN STACK @V2B2698 00537000
  548. LA R2,VMSTKO VMBLOK POINTER TO STACK CHAIN @V2B2698 00538000
  549. STKLOOP L R3,0(R2) LOCATE LAST BUFFER IN CHAIN @V2B2698 00539000
  550. LTR R3,R3 IN EXISTING STACK @V2B2698 00540000
  551. BZ CHAIN THIS IS IT @V2B2698 00541000
  552. LR R2,R3 NOT THIS ONE, POINT TO NEXT @V2B2698 00542000
  553. B STKLOOP MAYBE THIS IS @V2B2698 00543000
  554. CHAIN ST R1,0(R2) PREVIOUS LAST POINTS TO NEW @V2B2698 00544000
  555. L R4,SAVEWRK1 RESET BUFFER POINTER @V2B2698 00545000
  556. L R1,SAVEWRK3 ADD 1 TO COUNT OF BUFFERS @V2B2698 00546000
  557. LA R1,1(R1) STACKED @V2B2698 00547000
  558. ST R1,SAVEWRK3 AND RESTORE @V2B2698 00548000
  559. BR R6 AND CONTINUE VMBLOK SCAN @V2B2698 00549000
  560. SPACE 00550000
  561. MVCSTK MVC 8(0,R1),0(R7) MOVE MESSAGE INTO STACK BUFFER @V2B2698 00551000
  562. SPACE 00552000
  563. THI003E EQU * INVALID OPTION @V2B2698 00553000
  564. LA R2,003(0) MESSAGE NUMBER @V2B2698 00554000
  565. B MSGEND @V2B2698 00555000
  566. SPACE 00556000
  567. THI045E EQU * DMKTHI045E USERID NOT LOGGED ON @V2B2698 00557000
  568. LA R2,045(0) MESSAGE NUMBER @V2B2698 00558000
  569. B MSGEND R0,R1 POINT TO USERID @V2B2698 00559000
  570. SPACE 00560000
  571. MSGEND ICM R0,14,MODID+3 @V2B2698 00561000
  572. CALL DMKERMSG DMKERM WILL RETURN TO CFM @V2B2698 00562000
  573. EJECT 00563000
  574. THIUSER CALL DMKSCNFD LOOK FOR NEXT PARAMETER @V2B2698 00564000
  575. BNZ GETMYDA DEFAULT IS NO PARAMETER @V2B2698 00565000
  576. CL R0,F8 MAX. 8 CHAR. USERID @V2B2698 00566000
  577. BH THI003E TOO MANY - INVALID OPTION @V2B2698 00567000
  578. CL R0,F1 MAY BE 1 CHAR SPECIAL @V2B2698 00568000
  579. BE TESTAS OK. CHECK FOR ASTERISK @V2B2698 00569000
  580. NOTAST LR R3,R0 @V2B2698 00570000
  581. BCTR R3,R0 LESS 1 FOR EXECUTED MOVE @V2B2698 00571000
  582. MVC SAVEWRK1(8),BLANKS PREPARE FIELD FOR USERID @V2B2698 00572000
  583. EX R3,MVUSID MOVE WHAT WE HAVE @V2B2698 00573000
  584. CLC SAVEWRK1(8),VMUSER START WITH CALLER @V2B2698 00574000
  585. BE GETMYDA LIKES TO SEE HIS NAME IN PRINT @V2B2698 00575000
  586. TM VMCLEVEL,E IS HE AUTHORIZED TO LOOK AROUND @V2B2698 00576000
  587. BZ THI003E NO, REJECT COMMAND @V2B2698 00577000
  588. LR R9,R11 YES, NOW VALIDATE USERID PARM @V2B2698 00578000
  589. B NOTSELF @V2B2698 00579000
  590. NXTUSR4 CLC SAVEWRK1(8),VMUSER-VMBLOK(R9) DOES USERID MATCH @V2B2698 00580000
  591. BE GETVMDA YES, FORMAT USER DATA FROM VMBLOK@V2B2698 00581000
  592. NOTSELF L R9,VMPNT-VMBLOK(,R9) NO, ONTO NEXT USER @V2B2698 00582000
  593. CR R9,R11 ARE WE AT END OF VMBLOK CHAIN @V2B2698 00583000
  594. BE THI045E YES, NO USERID MATCH...ERROR @V2B2698 00584000
  595. B NXTUSR4 NO, CHECK THIS USER @V2B2698 00585000
  596. SPACE 00586000
  597. MVUSID MVC SAVEWRK1(*-*),0(R1) MOVE USERID @V2B2698 00587000
  598. SPACE 00588000
  599. TESTAS CLI 0(R1),C'*' LOOK SPECIFICALLY FOR '*' @V2B2698 00589000
  600. BNE NOTAST UNLIKELY CASE OF 1 CHAR USERID @V2B2698 00590000
  601. GETMYDA LR R9,R11 OK POINT TO YOUR OWN USERID @V2B2698 00591000
  602. SPACE 00592000
  603. GETVMDA LA R0,USRMSG1L SPACE FOR LARGER OF 2 REPLY MSGS @V2B2698 00593000
  604. CALL DMKFREE GET THE BUFFER @V2B2698 00594000
  605. USING USRMSG1D,R4 DSECT FOR FIRST LINE OF REPLY @V2B2698 00595000
  606. LR R4,R1 @V2B2698 00596000
  607. LA R1,USRMSG1C LENGTH OF SKELETON REPLY @V2B2698 00597000
  608. BCTR R1,0 LESS 1 FOR EXECUTED MOVE @V2B2698 00598000
  609. EX R1,MVUSRMS1 MOVE INTO BUFFER @V2B2698 00599000
  610. LH R1,VMPAGES-VMBLOK(R9) CURR NUMBER OF RES PAGES @V2B2698 00600000
  611. BAL R8,CONVERT @V2B2698 00601000
  612. MVC RES,TEMPHOLD+4 @V2B2698 00602000
  613. LH R1,VMWSPROJ-VMBLOK(R9) CURRENT PROJECTED WSS @V2B2698 00603000
  614. BAL R8,CONVERT @V2B2698 00604000
  615. MVC WSS,TEMPHOLD+4 @V2B2698 00605000
  616. L R1,VMPGREAD-VMBLOK(R9) TOTAL PAGES READ SO FAR @V2B2698 00606000
  617. BAL R8,CONVERT @V2B2698 00607000
  618. MVC READS,TEMPHOLD+2 6 CHARS @V2B2698 00608000
  619. L R1,VMPGWRIT-VMBLOK(R9) TOTAL PAGES WRITTEN @V2B2698 00609000
  620. BAL R8,CONVERT @V2B2698 00610000
  621. MVC WRITES,TEMPHOLD+2 @V2B2698 00611000
  622. LH R1,VMPDISK-VMBLOK(R9) PAGES ALLOCATED ON DISK @V2B2698 00612000
  623. BAL R8,CONVERT @V2B2698 00613000
  624. MVC DISK,TEMPHOLD+4 @V2B2698 00614000
  625. LH R1,VMPDRUM-VMBLOK(R9) PAGES ALLOCATED ON DRUM @V2B2698 00615000
  626. BAL R8,CONVERT @V2B2698 00616000
  627. MVC DRUM,TEMPHOLD+4 4 CHARS @V2B2698 00617000
  628. LA R0,USRMSG1C REPLY MESSAGE LENGTH @V2B2698 00618000
  629. LR R1,R4 AND LOCATION @V2B2698 00619000
  630. CALL DMKQCNWT,PARM=NORET WRITE MSG, DON'T WAIT @V2B2698 00620000
  631. SPACE 00621000
  632. DROP R4 @V2B2698 00622000
  633. USING USRMSG2D,R4 DSECT FOR SECOND LINE OF REPLY @V2B2698 00623000
  634. LA R1,USRMSG2C BYTE COUNT OF SECOND LINE @V2B2698 00624000
  635. BCTR R1,0 LESS 1 FOR EXECUTED MOVE @V2B2698 00625000
  636. EX R1,MVUSRMS2 MOVE SKELETON REPLY INTO BUFFER @V2B2698 00626000
  637. LR R11,R9 SET UP PROPER VMBLOK ADDR @V2B2698 00627000
  638. CALL DMKTMRPT GET TOT VIRT TIME, DONT MISS ANY @V2B2698 00628000
  639. L R11,SAVER11 RESTORE CALLERS VMBLOK ADDR @V2B2698 00629000
  640. LR R2,R0 MOVE VTIME TOTAL TO R2,R3 @V2B2698 00630000
  641. LR R3,R1 ... @V2B2698 00631000
  642. ST R2,TEMP2 AND SAVE IT FOR LATER @V2B2698 00632000
  643. ST R3,TEMP2+4 ... @V2B2698 00633000
  644. LTR R2,R2 WATCH OUT FOR ZERO @V2B2698 00634000
  645. BP SHIFT MAKE SURE VALUE POSITIVE @VA06179 00634500
  646. SR R2,R2 MAKE SURE R2 IS ZERO @VA06179 00635000
  647. ST R2,TEMP2 MAKE SURE TEMP2 IS NOT NEG @VA06179 00635500
  648. TM TEMP2+4,X'80' DON'T WANT TO MISS 1/2 SEC @V2B2698 00636000
  649. BO SHIFT STILL OK TO DIVIDE, VALUE IS SIG @V2B2698 00637000
  650. SR R1,R1 LESS THAN 1/2 SEC, SAME AS ZERO @V2B2698 00638000
  651. B NOVT SKIP DIVIDES @V2B2698 00639000
  652. SHIFT SRDL R2,12 RIGHT ALIGNED MICROSECS @V2B2698 00640000
  653. D R2,=F'1000000' SECONDS IN R3, REM IN R2 @V2B2698 00641000
  654. C R2,=F'500000' IS REMAINDER SIGNIFICANT @V2B2698 00642000
  655. BNH NORND NO, NO ROUND UP @V2B2698 00643000
  656. LA R3,1(,R3) YES, ADD 1 TO RESULT @V2B2698 00644000
  657. NORND SR R2,R2 CLEAR AGAIN FOR DIVIDE @V2B2698 00645000
  658. LTR R3,R3 ABOUT TO DIVIDE BY ZERO? @V2B2698 00646000
  659. BZ *+8 YES, DON'T DO IT. @V2B2698 00647000
  660. D R2,F60 MINS IN R3, SECS IN R2 @V2B2698 00648000
  661. LR R1,R3 @V2B2698 00649000
  662. NOVT BAL R8,CONVERT CONVERT TO DEC. IN TEMPHOLD @V2B2698 00650000
  663. MVC VTIME,TEMPHOLD+5 MAX 999 MINS @V2B2698 00651000
  664. LR R1,R2 NOW CONVERT THE SECONDS FIELD @V2B2698 00652000
  665. BAL R8,CONVERT @V2B2698 00653000
  666. MVC VSECS,TEMPHOLD+6 MAX 59 OF COURSE @V2B2698 00654000
  667. LM R0,R1,VMTTIME-VMBLOK(R9) SIMULATION TIME @V2B2698 00655000
  668. SL R1,TEMP2+4 SUBTRACT PROBLEM TIME TO GET @V2B2698 00656000
  669. BC 8+2+1,*+8 TOTAL TIME, BRANCH ON NO CARRY @V2B2698 00657000
  670. SL R0,F1 @V2B2698 00658000
  671. SL R0,TEMP2 TOTAL NOW IN R0,R1 @V2B2698 00659000
  672. LM R2,R3,=X'7FFFFFFFFFFFF000' MAX POSITIVE NUMBER @V2B2698 00660000
  673. SLR R3,R1 GET POSITIVE TOTAL TIME @V2B2698 00661000
  674. BC 8+2+1,*+8 BR ON NO CARRY @V2B2698 00662000
  675. SL R2,F1 @V2B2698 00663000
  676. SLR R2,R0 TOTAL POSITIVE VALUE IN R2,R3 @V2B2698 00664000
  677. LTR R2,R2 BE WARY OF ZERO CASE @V2B2698 00665000
  678. BNZ SHIFT2 NO PROBLEM @V2B2698 00666000
  679. LTR R3,R3 DON'T WANT TO MISS 1/2 SEC @V2B2698 00667000
  680. BM SHIFT2 SMALL BUT OK FOR A WHILE @V2B2698 00668000
  681. SLR R3,R3 < 1/2 SEC, MAKE IT ZERO. @V2B2698 00669000
  682. B ZEROT ABSOLUTELY ZERO @V2B2698 00670000
  683. SHIFT2 SRDL R2,12 NOW RIGHT ALIGNED MICROSECONDS @V2B2698 00671000
  684. D R2,=F'1000000' CONVERT TO SEC IN R3, REM IN R2 @V2B2698 00672000
  685. C R2,=F'500000' IS REMAINDER SIGNIFICANT @V2B2698 00673000
  686. BNH NORND2 NO @V2B2698 00674000
  687. LA R3,1(,R3) YES, ROUND UP TO NEAREST SECOND @V2B2698 00675000
  688. NORND2 SR R2,R2 @V2B2698 00676000
  689. LTR R3,R3 SMALL CHANCE A ZERO CREPT THROUGH@V2B2698 00677000
  690. BZ ZEROT SO IN THAT CASE SKIP DIVIDE @V2B2698 00678000
  691. D R2,F60 MINS IN R3, SECS IN R2 @V2B2698 00679000
  692. ZEROT LR R1,R3 MINS INTO R1 FOR CONVERT @V2B2698 00680000
  693. NOTT BAL R8,CONVERT @V2B2698 00681000
  694. MVC TTIME,TEMPHOLD+5 MAX 999 MINS @V2B2698 00682000
  695. LR R1,R2 SECS IN R1 FOR CONVERT @V2B2698 00683000
  696. BAL R8,CONVERT @V2B2698 00684000
  697. MVC TSECS,TEMPHOLD+6 MAX 59 SECS OF COURSE @V2B2698 00685000
  698. L R1,VMIOCNT-VMBLOK(R9) TOTAL VIRTUAL DISK I/O @V2B2698 00686000
  699. BAL R8,CONVERT @V2B2698 00687000
  700. MVC SIO,TEMPHOLD+2 6 CHARS @V2B2698 00688000
  701. L R1,VMCRDS-VMBLOK(R9) TOTAL VIRTUAL CARDS READ @V2B2698 00689000
  702. BAL R8,CONVERT @V2B2698 00690000
  703. MVC RDR,TEMPHOLD+2 @V2B2698 00691000
  704. L R1,VMLINS-VMBLOK(R9) TOTAL VIRT LINE PRINTED @V2B2698 00692000
  705. BAL R8,CONVERT @V2B2698 00693000
  706. MVC PRT,TEMPHOLD+2 @V2B2698 00694000
  707. L R1,VMPNCH-VMBLOK(R9) TOTAL VIRT CARDS PUNCHED @V2B2698 00695000
  708. BAL R8,CONVERT @V2B2698 00696000
  709. MVC PCH,TEMPHOLD+2 @V2B2698 00697000
  710. LA R0,USRMSG2C BYTE COUNT OF 2ND LINE OF REPLY @V2B2698 00698000
  711. LR R1,R4 LOCATION OF BUFFER @V2B2698 00699000
  712. LA R3,USRMSG1L DOUBLE WORD SIZE OF LARGEST BUFF @V2B2698 00700000
  713. CALL DMKQCNWT,PARM=NORET+DFRET FRET BUFF, DONT WAIT @V2B2698 00701000
  714. B THIEXIT @V2B2698 00702000
  715. DROP R4 @V2B2698 00703000
  716. EJECT 00704000
  717. THIQUE LA R0,QUEMSGL 68 BYTES OR 2 23 BYTE + 1 22 @V2B2698 00705000
  718. CALL DMKFREE GET BUFFER @V2B2698 00706000
  719. ST R1,SAVEWRK1 START OF EACH REPLY @V2B2698 00707000
  720. LA R3,68(R1) END OF MAX REPLY MESSAGE @V2B2698 00708000
  721. ST R3,SAVEWRK2 SAVE FOR LATER COMPARE @V2B2698 00709000
  722. LR R4,R1 @V2B2698 00710000
  723. SR R10,R10 @V2B2698 00711000
  724. ST R10,SAVEWRK3 CLEAR STACK COUNTER @V2B2698 00712000
  725. L R10,PREFIXB GET OTHER PROC'S PREFIX ADDRESS @V4M0174 00712100
  726. L R10,RUNUSER(R10) GET RUNUSER ON OTHER PROCESSOR @V4M0174 00712200
  727. ST R10,SAVEWRK4 SAVE RUNUSER ON OTHER PROCESSOR @V4M0174 00712300
  728. L R9,=A(DMKSCHRL) START BY SCANNING THE RUNLIST @V407577 00713100
  729. MORERL L R9,VMQFPNT-VMBLOK(,R9) POINT TO THE NEXT VMBLOK @V407577 00713200
  730. C R9,=A(DMKSCHRL) END OF THE RUNLIST? @V407577 00713300
  731. BE TRYE1 GO TRY ELIGIBLE LIST E1 @V407577 00713400
  732. BAL R6,BLDMSMSG ADD THIS USER TO THE RESPONSE @V407577 00713500
  733. B MORERL TRY FOR MORE USERS @V407577 00713600
  734. TRYE1 L R9,=A(DMKSCHEL) NOW SCAN ELIGIBLE LIST E1 @V407577 00713700
  735. MOREE1 L R9,VMQFPNT-VMBLOK(,R9) POINT TO NEXT USER @V407577 00713800
  736. C R9,=A(DMKSCHEL) AT END OF ELIGIBLE LIST E1? @V407577 00713900
  737. BE TRYE2 YES...TRY E2 @V407577 00714000
  738. BAL R6,BLDMSMSG ADD THIS USER TO THE RESPONSE @V407577 00714100
  739. B MOREE1 GO LOOK FOR MORE E1 USERS @V407577 00714200
  740. TRYE2 L R9,=A(DMKSCHEL+8) POINT TO THE ANCHOR FOR E2 @V407577 00714300
  741. MOREE2 L R9,VMQFPNT-VMBLOK(,R9) POINT TO NEXT USER @V407577 00714400
  742. C R9,=A(DMKSCHEL+8) AT END OF ELIGIBLE LIST E2? @V407577 00714500
  743. BE LASTQ YES...END OF SCAN @V407577 00714600
  744. BAL R6,BLDMSMSG ADD THIS USER TO THE RESPONSE @V407577 00714700
  745. B MOREE2 GO BACK FOR MORE E2 @V407577 00714800
  746. LASTQ EQU * @V407577 00714900
  747. C R4,SAVEWRK1 ALL DONE, DID WE GET ANYTHING @V2B2698 00720000
  748. BE FRET NO, NO LAST LINE TO STACK UP @V2B2698 00721000
  749. BAL R6,STACK YES, STACK PARTIALLY FILLED LINE @V2B2698 00722000
  750. FRET LA R0,QUEMSGL AND FREE INTERMEDIATE BUFFER @V2B2698 00723000
  751. L R1,SAVEWRK1 BUFFER POINTER @V2B2698 00724000
  752. CALL DMKFRET @V2B2698 00725000
  753. L R10,SAVEWRK3 CNT OF PASSES THROUGH STACK RTN @V2B2698 00726000
  754. LTR R10,R10 IF NONE, SEND SPECIAL REPLY @V2B2698 00727000
  755. BNZ THIEXIT AT LEAST ONE @V2B2698 00728000
  756. LA R0,NOINQML MESSAGE LENGTH AND LOCATION @V2B2698 00729000
  757. LA R1,NOINQM @V2B2698 00730000
  758. CALL DMKQCNWT,PARM=NORET @V2B2698 00731000
  759. B THIEXIT @V2B2698 00732000
  760. SPACE 00733000
  761. USING QUEMSGD,R4 @V2B2698 00734000
  762. BLDMSMSG MVC QUSERID,VMUSER-VMBLOK(R9) USERID AS ALWAYS @V2B2698 00735000
  763. TM VMDSTAT-VMBLOK(R9),VMELIG WHICH Q IS HE IN @V2B2698 00736000
  764. BZ USERINQ NOT IN ELIG LIST MUST BE IN Q @V2B2698 00737000
  765. TM VMQLEVEL-VMBLOK(R9),VMQ1 IS IT Q1 @V2B2698 00738000
  766. BZ ELIGQ2 NO, MUST BE ELIG FOR Q2 @V2B2698 00739000
  767. MVC QQUEUE,=C' E1 ' PATCH MESSAGE @V2B2698 00740000
  768. B GETSTAT @V2B2698 00741000
  769. ELIGQ2 MVC QQUEUE,=C' E2 ' @V2B2698 00742000
  770. B GETSTAT @V2B2698 00743000
  771. USERINQ TM VMQLEVEL-VMBLOK(R9),VMQ1 IS HE IN Q1 @V2B2698 00744000
  772. BZ INQ2 NO, MUST BE IN Q2 @V2B2698 00745000
  773. MVC QQUEUE,=C' Q1 ' @V2B2698 00746000
  774. B GETSTAT @V2B2698 00747000
  775. INQ2 MVC QQUEUE,=C' Q2 ' @V2B2698 00748000
  776. GETSTAT MVC QSTATUS,=C'-- ' THIS STATUS WILL DO FOR MANY @V2B2698 00749000
  777. L R8,RUNUSER HIGHEST PRIORITY IS RUNUSER @V2B2698 00750000
  778. SLR R7,R7 POINT TO THIS PROCESSOR'S PREFIX @V407577 00752100
  779. CR R8,R9 IS THIS USER RUNUSER ON THIS @V407577 00752200
  780. * PROCESSOR? 00752300
  781. BE SETRU YES...GO TEST WHETHER CPU OR APU @V407577 00752400
  782. TRYAPU TM APSTAT1,APUOPER IS THE APU OPERATIONAL? @V407577 00752500
  783. BNO TRYPGW NO...TEST FOR PAGEWAIT @V407577 00752600
  784. L R7,PREFIXB POINT TO OTHER PROCESSOR'S @V407577 00752700
  785. * PREFIX PAGE 00752800
  786. C R9,SAVEWRK4 RUNUSER ON OTHER PROCESSOR? @V4M0174 00752900
  787. BNE TRYDF NO...TRY FOR DEFERRED TASK PNDNG @V4M0174 00753000
  788. SETRU TM APSTAT1-PSA(R7),PROCIO IS THIS THE CPU? @V407577 00753100
  789. BNO SETRA NO...INDICATE RUNUSER ON APU @V407577 00753200
  790. MVC QSTATUS,=C'RU ' YES...INDICATE RUNUSER CPU @V407577 00753300
  791. B GETPRES GO FILL IN THE WORKING SET DATA @V407577 00753400
  792. SETRA MVC QSTATUS,=C'RA ' INDICATE RUNUSER ON THE APU @V407577 00753500
  793. B GETPRES GO FILL IN WORKING SET DATA @V407577 00753600
  794. TRYDF DS 0H @V4M0174 00753700
  795. TM VMPEND-VMBLOK(R9),VMDEFSTK TEST FOR DEFERRED @V4M0174 00753800
  796. BZ TRYPGW NO...TRY FOR PAGEWAIT @V4M0174 00753900
  797. MVC QSTATUS,=C'DF ' INDICATE DEFERRED TASK PENDING @V4M0174 00754000
  798. B GETPRES GO FILL IN WORKING SET DATA @V4M0174 00754100
  799. TRYPGW TM VMRSTAT-VMBLOK(R9),VMPGWAIT IS HE IN PAGEWAIT @V2B2698 00755000
  800. BZ TRYIOW NO, I/O WAIT NEXT PRIORITY @V2B2698 00756000
  801. MVC QSTATUS,=C'PG ' YES, PATCH STATUS FLAG @V2B2698 00757000
  802. B GETPRES ON WITH THE SHOW @V2B2698 00758000
  803. TRYIOW TM VMRSTAT-VMBLOK(R9),VMIOWAIT IS HE IN I/O WAIT @V2B2698 00759000
  804. BZ TRYINW NO, INST SIMULATION WAIT NEXT @V2B2698 00760000
  805. MVC QSTATUS,=C'IO ' I/O WAIT STATUS INDICATOR @V2B2698 00761000
  806. B GETPRES @V2B2698 00762000
  807. TRYINW TM VMRSTAT-VMBLOK(R9),VMEXWAIT IS HE IN INST WAIT @V2B2698 00763000
  808. BZ TRYPSW NO, PSW WAIT LAST PRIORITY @V2B2698 00764000
  809. MVC QSTATUS,=C'EX ' YES, INSTRUCTION WAIT INDICATOR @V2B2698 00765000
  810. B GETPRES @V2B2698 00766000
  811. TRYPSW TM VMRSTAT-VMBLOK(R9),VMPSWAIT ENAB WAIT IN QUEUE @V2B2698 00767000
  812. BZ GETPRES NO, NO OTHER STATES OF INTEREST @V2B2698 00768000
  813. MVC QSTATUS,=C'PS ' PATCH FOR PSW WAIT STATUS @V2B2698 00769000
  814. GETPRES UNPK QPRES(4),VMPAGES-VMBLOK(3,R9) SHRT CNT, TRUNC HI@V2B2698 00770000
  815. TR QPRES,ABX-240 CHANGE GRABBAGE TO EBCDIC @V2B2698 00771000
  816. MVI QSEP1,C'/' FIX UP CLOBBERED CHARACTER @V2B2698 00772000
  817. UNPK QWSS(4),VMWSPROJ-VMBLOK(3,R9) SHRT CNT, TRUNC HI@V2B2698 00773000
  818. TR QWSS,ABX-240 CHANGE GRABBAGE TO EBCDIC @V2B2698 00774000
  819. LR R5,R4 SAVE FOR FIELD SEPARATOR @V2B2698 00775000
  820. LA R4,23(R4) INDEX TO NEXT FIELD @V2B2698 00776000
  821. C R4,SAVEWRK2 SPACE FOR ANOTHER FIELD @V2B2698 00777000
  822. BNL STACK NO, STACK THIS FIRST, RESET PTR @V2B2698 00778000
  823. MVI QSEP2-QUEMSGD(R5),C' ' YES, ADD FIELD SEPARATOR @V2B2698 00779000
  824. BR R6 AND CONTINUE WITH NEXT VMBLOK @V2B2698 00780000
  825. EJECT 00781000
  826. LODMSGSK DS 0H THI SUMMARY SKELETON REPLY @V2B2698 00782000
  827. DC C'CPU-' @V2B2698 00783000
  828. DC C' ' @V2B2698 00784000
  829. DC C'% APU-' @V407577 00784100
  830. DC C' ' @V407577 00784200
  831. DC C'% Q1-' @V2B2698 00785000
  832. DC C' ' @V2B2698 00786000
  833. DC C' Q2-' @V2B2698 00787000
  834. DC C' ' @V2B2698 00788000
  835. DC C' STORAGE-' @V2B2698 00789000
  836. DC C' ' @V2B2698 00790000
  837. DC C'% RATIO-' @V2B2698 00791000
  838. DC C' . ' @VA04300 00792500
  839. ABX DC C'0123456789ABCDEF' @V2B2698 00793000
  840. NOIOMSG DS 0H @V2B2698 00794000
  841. DC C'NO USERS IN ' @V2B2698 00795000
  842. PATCH DC C'I/O ' @V2B2698 00796000
  843. DC C' WAIT' @V2B2698 00797000
  844. NOIOMSGL EQU *-NOIOMSG @V2B2698 00798000
  845. NOINQM DS 0H @V2B2698 00799000
  846. DC C'NO USERS IN Q' @V2B2698 00800000
  847. NOINQML EQU *-NOINQM @V2B2698 00801000
  848. USERMSG1 DC C'PAGES: RES- ' USER SKELETON REPLY, LINE 1 @V2B2698 00802000
  849. DC C' WS- ' @V2B2698 00803000
  850. DC C' READS= ' @V2B2698 00804000
  851. DC C' WRITES= ' @V2B2698 00805000
  852. DC C' DISK- ' @V2B2698 00806000
  853. DC C' DRUM- ' @V2B2698 00807000
  854. USERMSG2 DC C'VTIME= : ' USER SKELETON REPLY, LINE 2 @V2B2698 00808000
  855. DC C' TTIME= : ' @V2B2698 00809000
  856. DC C' SIO= ' @V2B2698 00810000
  857. DC C' RDR- ' @V2B2698 00811000
  858. DC C' PRT- ' @V2B2698 00812000
  859. DC C' PCH- ' @V2B2698 00813000
  860. SPACE 00814000
  861. TEMP2 DC D'0' CURRENT UP TO DATE VMVTIME VALUE @V2B2698 00815000
  862. TEMPHOLD DC D'0' @V2B2698 00816000
  863. DC C' ' BLANK SEP MUST FOLLOW TEMPHOLD @V2B2698 00817000
  864. SPACE 00818000
  865. LOADMSGD DSECT THI LOAD REPLY MESSAGE @V2B2698 00819000
  866. DS CL4 CPU- @V2B2698 00820000
  867. CPUTIL DS CL3 CPU UTILIZATION IN PERCENT @V2B2698 00821000
  868. DS CL7 @V407577 00821100
  869. APUTIL DS CL3 @V407577 00821200
  870. DS CL6 % Q1 @V2B2698 00822000
  871. NUMQ1 DS CL2 SMOOTHED NUMBER OF USERS IN Q1 @V2B2698 00823000
  872. DS CL5 Q2- @V2B2698 00824000
  873. NUMQ2 DS CL2 SMOOTHED NUMBER OF USERS IN Q2 @V2B2698 00825000
  874. DS CL10 STORAGE- @V2B2698 00826000
  875. CORUTIL DS CL3 SMOOTHED CORE UTILIZATION @V2B2698 00827000
  876. DS CL9 RATIO @V2B2698 00828000
  877. QUTIL DS CL2 SMOOTHED Q CONVENTION RATIO @VA04300 00829500
  878. DS CL1 . @V2B2698 00830000
  879. QUTILDEC DS CL1 @V2B2698 00831000
  880. SPACE 00832000
  881. LOADMSGL EQU (*-LOADMSGD+7)/8 LOAD REPLY MSG SIZE IN DBL WDS @V2B2698 00833000
  882. LOADMSGC EQU *-LOADMSGD IN BYTES @V2B2698 00834000
  883. SPACE 00835000
  884. USRMSG1D DSECT USER REPLY MESSAGE..FIRST LINE @V2B2698 00836000
  885. DS CL11 PAGES: RES @V2B2698 00837000
  886. RES DS CL4 COUNT OF PAGES RESIDENT @V2B2698 00838000
  887. DS CL4 WS- @V2B2698 00839000
  888. WSS DS CL4 CURRENT WORKING SET VALUE @V2B2698 00840000
  889. DS CL7 READS= @V2B2698 00841000
  890. READS DS CL6 TOTAL PAGE READS @V2B2698 00842000
  891. DS CL8 WRITES= @V2B2698 00843000
  892. WRITES DS CL6 TOTAL PAGE WRITES @V2B2698 00844000
  893. DS CL6 DISK- @V2B2698 00845000
  894. DISK DS CL4 VIRTUAL PAGES RESIDENT ON DISK @V2B2698 00846000
  895. DS CL6 DRUM- @V2B2698 00847000
  896. DRUM DS CL4 VIRTUAL PAGES RESIDENT ON DRUM @V2B2698 00848000
  897. SPACE 00849000
  898. USRMSG1L EQU (*-USRMSG1D+7)/8 IND USER REPLY BUFFER SIZE @V2B2698 00850000
  899. USRMSG1C EQU *-USRMSG1D IN BYTES @V2B2698 00851000
  900. SPACE 00852000
  901. USRMSG2D DSECT USER MESSAGE REPLY..2ND LINE @V2B2698 00853000
  902. DS CL6 VTIME= @V2B2698 00854000
  903. VTIME DS CL3 VTIME THIS SESSION IN MINS @V2B2698 00855000
  904. DS CL1 : @V2B2698 00856000
  905. VSECS DS CL2 AND SECONDS @V2B2698 00857000
  906. DS CL7 TTIME= @V2B2698 00858000
  907. TTIME DS CL3 VTIME+TTIME IN MINS @V2B2698 00859000
  908. DS CL1 : @V2B2698 00860000
  909. TSECS DS CL2 AND SECONDS @V2B2698 00861000
  910. DS CL5 SIO= @V2B2698 00862000
  911. SIO DS CL6 TOTAL NON MULTIPLEXOR SIO COUNT @V2B2698 00863000
  912. DS CL5 RDR- @V2B2698 00864000
  913. RDR DS CL6 TOTAL VIRTUAL CARDS READ @V2B2698 00865000
  914. DS CL5 PRT- @V2B2698 00866000
  915. PRT DS CL6 TOTAL VIRTUAL LINES PRINTED @V2B2698 00867000
  916. DS CL5 PCH- @V2B2698 00868000
  917. PCH DS CL6 TOTAL VIRTUAL CARDS PUNCHED @V2B2698 00869000
  918. SPACE 00870000
  919. USRMSG2L EQU (*-USRMSG2D+7)/8 LENGTH IN DOUBLE WORDS @V2B2698 00871000
  920. USRMSG2C EQU *-USRMSG2D IN BYTES @V2B2698 00872000
  921. SPACE 00873000
  922. IOMSGD DSECT DSECT FOR REPLY TO THI I/O @V2B2698 00874000
  923. IUSERID DS CL8 USERID AS USUAL @V2B2698 00875000
  924. ISEP1 DS CL1 BLANK SEPARATOR @V2B2698 00876000
  925. IRADD DS CL3 REAL DEVICE ADDRESS @V2B2698 00877000
  926. ISEP2 DS CL1 BLANK SEPARATOR BETWEEN FIELDS @V2B2698 00878000
  927. SPACE 00879000
  928. PAGMSGD DSECT DSECT FOR REPLY TO THI PAGING @V2B2698 00880000
  929. PUSERID DS CL8 USERID @V2B2698 00881000
  930. PSEP1 DS CL1 BLANK SEPARATOR @V2B2698 00882000
  931. PDRUM DS CL3 PAGES RESIDENT ON DRUM @V2B2698 00883000
  932. PCOLON DS CL1 COLON SEPARATOR @V2B2698 00884000
  933. PDISK DS CL3 PAGES RESIDENT ON DISK @V2B2698 00885000
  934. PSEP2 DS CL1 BLANK SEPARATOR BETWEEN FIELDS @V2B2698 00886000
  935. SPACE 00887000
  936. IOPGMSGL EQU 9 BUFF SIZE FOR 6 I/O OR 5 PAGING @V2B2698 00888000
  937. SPACE 00889000
  938. QUEMSGD DSECT DSECT FOR REPLY TO THI QUEUE @V2B2698 00890000
  939. QUSERID DS CL8 USERID @V2B2698 00891000
  940. QQUEUE DS CL4 QUEUE OCCUPIED BY THIS USER @V2B2698 00892000
  941. QSTATUS DS CL3 STATUS OF THIS USER @V2B2698 00893000
  942. QPRES DS CL3 PAGES RESIDENT IN MAIN STORAGE @V2B2698 00894000
  943. QSEP1 DS CL1 SEPARATOR '/' @V2B2698 00895000
  944. QWSS DS CL3 CURRENT WORKING SET SIZE @V2B2698 00896000
  945. QSEP2 DS CL1 SEPARATOR BETWEEN FIELDS @V2B2698 00897000
  946. SPACE 00898000
  947. QUEMSGL EQU ((*-QUEMSGD)*3+7)/8 BUFFER FOR REPLY @V2B2698 00899000
  948. QUEMSGC EQU *-QUEMSGD REPLY LENGTH IN BYTES @V2B2698 00900000
  949. EJECT 00901000
  950. COPY VMBLOK @V2B2698 00902000
  951. PSA @V2B2698 00903000
  952. COPY SAVE @V2B2698 00904000
  953. COPY EQU @V2B2698 00905000
  954. SPACE 00906000
  955. * EQUATES USED FOR COMMAND CLASSES: 00907000
  956. A EQU VMCLASSA SYSTEM OPERATOR @V2B2698 00908000
  957. B EQU VMCLASSB RESOURCE CONTROL OPERATOR @V2B2698 00909000
  958. C EQU VMCLASSC SYSTEM PROGRAMMER @V2B2698 00910000
  959. D EQU VMCLASSD SPOOL CONTROL OPERATOR @V2B2698 00911000
  960. E EQU VMCLASSE SYSTEM EXAMINER @V2B2698 00912000
  961. F EQU VMCLASSF PROGRAM SUPPORT REPRESENTATIVE @V2B2698 00913000
  962. G EQU VMCLASSG GENERAL USERS @V2B2698 00914000
  963. EJECT 00915000
  964. COPY IOBLOKS @V2B2698 00916000
  965. COPY VBLOKS @V2B2698 00917000
  966. COPY RBLOKS @V2B2698 00918000
  967. COPY DEVTYPES @V2B2698 00919000
  968. END 00920000