Table of Contents

DMTQRQ Source

References

Source Listing

DMTQRQ.ASSEMBLE.txt
  1. QRQ TITLE 'DMTQRQ (RSCS) VM/370 - RELEASE 6' 00001000
  2. *. 00002000
  3. * MODULE NAME - 00003000
  4. * 00004000
  5. * DMTQRQ 00005000
  6. * 00006000
  7. * FUNCTION - 00007000
  8. * 00008000
  9. * THE DMTQRQ MODULE MANAGES THE MSUP SUPERVISOR 00009000
  10. * STATUS QUEUE FOR OTHER MSUP FUNCTIONS. DMTQRQ IS 00010000
  11. * INTENDED FOR USE ONLY WITHIN THE SUPERVISOR 00011000
  12. * ITSELF, AND MUST BE ENTERED WITH ALL PSW MASKS OFF 00012000
  13. * (EXCEPT MACHINE CHECK). 00013000
  14. * 00014000
  15. * ATTRIBUTES - 00015000
  16. * 00016000
  17. * REUSABLE 00017000
  18. * 00018000
  19. * ENTRY POINTS - 00019000
  20. * 00020000
  21. * DMTQRQ - RESERVE OR RELEASE A SUP QUEUE ELEMENT 00021000
  22. * 00022000
  23. * ENTRY CONDITIONS - 00023000
  24. * 00024000
  25. * GPR1 = 0 IMPLIES A REQUEST TO RESERVE AN ELEMENT 00025000
  26. * ¬= 0 IMPLIES A REQUEST TO RELEASE THE ELEMENT 00026000
  27. * WHOSE ADDRESS IS IN GPR1 00027000
  28. * 00028000
  29. * EXIT CONDITIONS - 00029000
  30. * 00030000
  31. * NORMAL - 00031000
  32. * 00032000
  33. * GPR1 = RESERVD ELEM ADDR ON RESERVE REQ 00033000
  34. * GPR15 = X'00' IMPLIES NORMAL REQ COMPLETION 00034000
  35. * 00035000
  36. * ERROR - 00036000
  37. * 00037000
  38. * GPR15 = X'10' IMPLIES NO ELEMENT AVAILABLE ON 00038000
  39. * A RESERVE REQUEST 00039000
  40. EJECT 00040000
  41. * 00041000
  42. * CALLS TO OTHER ROUTINES - 00042000
  43. * 00043000
  44. * NONE 00044000
  45. * 00045000
  46. * EXTERNAL REFERENCES - 00046000
  47. * 00047000
  48. * DMTVEC - SUPERVISOR COMMON AREA 00048000
  49. * 00049000
  50. * TABLES / WORKAREAS - 00050000
  51. * 00051000
  52. * FREE QUEUE ELEMENT 00052000
  53. * 00053000
  54. * REGISTER USAGE - 00054000
  55. * 00055000
  56. * GPR0 = UNUSED 00056000
  57. * GPR1 = FREE ELEMENT POINTER 00057000
  58. * GPR2 = UNUSED 00058000
  59. * GPR3 = UNUSED 00059000
  60. * GPR4 = UNUSED 00060000
  61. * GPR5 = UNUSED 00061000
  62. * GPR6 = UNUSED 00062000
  63. * GPR7 = UNUSED 00063000
  64. * GPR8 = UNUSED 00064000
  65. * GPR9 = UNUSED 00065000
  66. * GPR10 = UNUSED 00066000
  67. * GPR11 = UNUSED 00067000
  68. * GPR12 = UNUSED 00068000
  69. * GPR13 = UNUSED 00069000
  70. * GPR14 = RETURN ADDRESS 00070000
  71. * GPR15 = ENTRY ADDRESS AND RETURN CODE 00071000
  72. * 00072000
  73. * NOTES - 00073000
  74. * 00074000
  75. * NO VALIDATION IS PERFORMED ON QUEUE ELEMENTS TO BE 00075000
  76. * RELEASED - THE CALLING ROUTINES ARE RESPONSIBLE FOR 00076000
  77. * THAT FUNCTION. 00077000
  78. * 00078000
  79. * OPERATION - 00079000
  80. * 00080000
  81. * THE RELEASE OR 'FREE' FUNCTION OF DMTQRQ ENQUEUES 00081000
  82. * THE ELEMENT SPECIFIED BY THE CALLER TO BE RELEASED 00082000
  83. * ON THE QUEUE OF FREE SUPERVISOR ELEMENTS, AND 00083000
  84. * RETURNS WITHOUT ANY POSSIBLE ERROR CONDITIONS. 00084000
  85. * 00085000
  86. * THE RESERVE OR 'GET' FUNCTION OF DMTQRQ DEQUEUES 00086000
  87. * THE FIRST ELEMENT ON THE FREE SUPERVISOR ELEMENT QUEUE 00087000
  88. * AND RETURNS IT'S ADDRESS TO THE CALLER IN GPR1. 00088000
  89. * IF NO FREE ELEMENT IS AVAILABLE, AN ERROR CODE IS 00089000
  90. * RETURNED TO THE CALLER IN GPR15. 00090000
  91. * 00091000
  92. *. 00092000
  93. EJECT 00093000
  94. DMTQRQ CSECT 00094000
  95. SPACE 00095000
  96. USING DMTQRQ,R15 00096000
  97. USING SVECTORS,0 GET SVECTORS ADDRESSABILITY 00097000
  98. USING FREEE,R1 GET FREE ELEMENT ADDRESSABILITY 00098000
  99. SPACE 00099000
  100. LTR R1,R1 IS REQUEST FOR GET OR FREE? 00100000
  101. BNZ QFREE ADDRESS SUPPLIED - MUST BE FREE 00101000
  102. ICM R1,B'1111',FREEQ R1 ADDR OF START FREE QUEUE, END? 00102000
  103. BZ QERROR NOPE - ERROR RETURN 00103000
  104. MVC FREEQ(4),FREENEXT SET NEXT ELEMENT AS START OF QUEUE 00104000
  105. B QEXIT AND RETURN WITH ELEMENT ADDRESS IN REG.1 00105000
  106. SPACE 00106000
  107. QFREE EQU * 00107000
  108. LA R1,0(R1) SET HIGH ORDER BYTE TO ZERO JUST IN CASE ... 00108000
  109. MVI FREEID,X'00' CLEAR FREE QUEUE ELEMENT ID FIELD 00109000
  110. MVC FREENEXT(4),FREEQ CHAIN CURRENT FREE QUEUE 00110000
  111. ST 1,FREEQ AND SET IT AT THE FRONT OF THE FREE QUEUE 00111000
  112. QEXIT EQU * 00112000
  113. SR R15,R15 SET RETURN CODE TO ZERO 00113000
  114. BR R14 AND RETURN SUCCESSFULLY 00114000
  115. SPACE 00115000
  116. QERROR EQU * 00116000
  117. LA R15,16 LOAD ERROR RETURN CODE 00117000
  118. BR R14 AND RETURN TO CALLER 00118000
  119. EJECT 00119000
  120. COPY RSSEQU 00120000
  121. EJECT 00121000
  122. COPY SVECTORS 00122000
  123. EJECT 00123000
  124. COPY FREEE 00124000
  125. END 00125000