* %GOTO RSMHPLS; /* 00050002 MACRO 00100002 IHARSMHD &DSECT=YES 00150002 IEZBITS 00152002 AGO .RSMARND 00160002 *********************************************************************** 00170002 * * 00180002 * STATUS - * 00190002 * CHANGE LEVEL 0 (OS/VS2 REL 4 VERSION) * 00192040 * FUNCTION - * 00194002 * MAPPING MACRO FOR RSM HEADER * 00196002 * ENTRY POINTS - * 00198002 * IHARSMHD MACRO CALL * 00198402 * INPUT - * 00198802 * SEE IHARSMHD MACRO DEFINITION * 00199202 * OUTPUT - * 00199602 * IHARSMHD MAPPING MACRO * 00199702 * EXTERNAL REFERENCES - * 00199802 * N/A * 00199902 * EXITS, NORMAL - * 00216602 * N/A * 00226602 * EXITS, ERROR - * 00228602 * N/A * 00230602 * TABLES/WORK AREAS - * 00232602 * N/A * 00233002 * ATTRIBUTES - * 00233102 * BILINGUAL MACRO * 00233202 * CHARACTER CODE DEPENDENCY - * 00238802 * NONE * 00240802 * NOTES - * 00242802 * NONE * 00243202 *********************************************************************** 00243602 .RSMARND ANOP 00243702 *********************************************************************** 00244002 ** REAL STORAGE MANAGEMENT HEADER ** 00244402 ** 8/15/75 ** 00250040 ** ONE RSM HEADER EXISTS FOR EACH CREATED VIRTUAL ** 00300002 ** ADDRESS SPACE. IT RESIDES IN SQA AND IS ADDRESSED ** 00350002 ** THROUGH THE ASCB. RSMHD CONTAINS ADDRESS SPACE ** 00400002 ** RELATED POINTERS, DATA FIELDS, AND QUEUE HEADERS ** 00450002 ** USED INTERNALLY BY RSM FUNCTIONS. ** 00500002 *********************************************************************** 00550002 AIF ('&DSECT' EQ 'NO').RSM001 00560002 RSMHD DSECT , RSMHDPTR 00600002 AGO .RSM002 00602002 .RSM001 ANOP 00610002 RSMHD DS 0F 00620002 .RSM002 ANOP 00630002 RSMVSTO DS A - VSA OF SEGMENT TABLE ORIGIN 00650002 RSMSPCT DS A - VSA OF SWAP CONTROL TABLE 00700002 RSMASCB DS A - VSA OF ADDR SPACE CONTROL BLOCK 00750002 * (ASCB), USED BY RSM AS BACKWARD 00810002 * REFERENCE TO THE MAIN ADRESS SPACE 00860002 * CONTROL BLOCK 00900002 RSMFLG1 DS BL1 - FLAG FIELD 00950002 RSMIOCPU EQU BIT0 - WHEN 1, IOCP HAS BEEN SCHEDULED TO 00960002 * REQUEST THE LOCAL LOCK UNCONDITIONALLY 00970002 * BUT HAS NOT BEEN DISPATCHED 00972002 RSMIOCPC EQU BIT1 - WHEN 1, IOCP HAS BEEN SCHEDULED 00980002 * TO RUN WITHOUT THE LOCAL LOCK 00990002 * BUT HAS NOT BEEN DISPATCHED 00990402 RSMGFAD EQU BIT2 - GFA DEFER PROCESSOR FLAG. WHEN 1, GFA 00992002 * DEFER PROCESSOR HAS BEEN SCHEDULED. 00994002 RSMCPNU EQU BIT3 - IOCP NOT SCHEDULED UNC FLAG. WHEN 1, 00994603 * IEAVIOCP MUST BE SCHEDULED TO REQUEST 00995203 * THE LOCAL LOCK UNCONDITIONALLY, BUT HAS 00995803 * NOT YET BEEN SCHEDULED. @Z30GNYD 00996403 RSMCPNC EQU BIT4 - IOCP NOT SCHEDULED WITHOUT FLAG. WHEN 00997003 * 1, IEAVIOCP MUST BE SCHEDULED TO RUN 00997603 * WITHOUT THE LOCAL LOCK, BUT HAS NOT YET 00998203 * BEEN SCHEDULED. @Z30GNYD 00998803 RSMGFADD EQU BIT5 - GFAD NOT SCHEDULED FLAG. WHEN 1, 00999040 * IEAVGFAD MUST BE SCHEDULED, BUT HAS NOT 00999140 * BEEN SCHEDULED YET. @Z40WPYD 00999240 RSMFAIL EQU BIT6 - RSM FAIL FLAG. WHEN 1, AN I/O ERROR 00999340 * OCCURED ON A LSQA PAGE SWAP-IN.@Z40WPYD 00999440 RSMRSV1 DS XL1 - RESERVED @YA01572 01000040 RSMCNTFX DC H'0' - NUMBER OF FRAMES FIXED IN THIS ADDRESS 01005040 * SPACE @YA01572 01010040 RSMRSV2 DS XL4 - RESERVED @Z40WPYD 01020040 ** 01200002 ** THE FOLLOWING ARE PFTE AND PCB QUEUE HEADERS 01250002 ** FOR THOSE QUEUES LOCAL TO A SPECIFIC ADDRESS SPACE. EACH 01300002 ** QUEUE HEADER CONSISTS OF TWO PARTS, THE FIRST CONTAINING 01350002 ** A POINTER TO THE FIRST ELEMENT ON THE QUEUE, THE SECOND 01400002 ** CONTAINING A POINTER TO THE LAST ELEMENT ON THE QUEUE. 01450002 ** SEE THE PFTE OR PCB DESCRIPTION FOR A DISCUUSION. 01460002 ** IF THE ORDER OR DISPLACEMENT OF ANY HEADER CHANGES, THE 01470002 ** PFTE OR PCB QUEUE INDEX VALUES MUST BE ADJUSTED ACCORDINGLY. 01480002 ** 01500002 RSMQS DS 0F - BEGINNING OF LOCAL QUEUE HEADERS 01502002 RSMLFQ DS 0F - LOCAL FRAME QUEUE (LFQ) HEADER. THIS 01510002 * QUEUE REPRESENTS THE REAL STORAGE 01512002 * FRAMES CURRENTLY ASSIGNED TO PRIVATE 01514002 * AREA VIRTUAL PAGES OF AN ADDRESS 01564002 * SPACE. BOTH PAGEABLE AND FIXED. 01614002 RSMLFQF DS AL2 - PFTE INDEX TO FIRST PFTE ON LFQ 01650002 RSMLFQL DS AL2 - PFTE INDEX TO LAST PFTE ON LFQ 01700002 RSMLSQA DS 0F - THE LSQA QUEUE HEADER. THE QUEUE 01750002 * REPRESENTS ALL REAL FRAMES ASSIGNED 01760002 * TO VIRTUAL LSQA PAGES FOR AN 01850002 * ADDRESS SPACE. 01860002 RSMLSQAF DS AL2 - PFTE INDEX OF FIRST PFTE ON LSQA QUEUE 01900002 RSMLSQAL DS AL2 - PFTE INDEX OF LAST PFTE ON LSQA QUEUE 01950002 RSMLIOQ DS 0CL8 - THE LOCAL I/O ACTIVE PCB QUEUE HEADER 02210002 * FOR A VIRTUAL ADDRESS SPACE. THIS 02220002 * QUEUE REPRESENTS PAGING I/O REQUESTS 02230002 * FOR PRIVATE AREA VIRTUAL PAGES THAT 02240002 * HAVE BEEN TRANSMITTED TO ASM. THE PCB 02242002 * REMAINS ON THE QUEUE UNTIL ALL 02244002 * PROCESSING FOR THE REQUESTHAS COMPLETED. 02246402 RSMLIOQF DS A - THE VIRTUAL ADDRESS OF THE FIRST PCB ON 02248002 * THE LOCAL I/O ACTIVE QUEUE. 02248402 RSMLIOQL DS A - THE VIRTUAL ADDRESS OF THE LAST PCB ON 02248802 * THE LOCAL I/O ACTIVE QUEUE. 02249202 RSMFOEQ DS A - ADDRESS OF AVAILABLE FOE(S) @Z30CNYC 02249403 * 02249703 RSMASMHD DS CL32 - AN ASM HEADER MAPPED BY 02255740 * ILRASMHD. @Z40WPYD 02261740 RSMLEN EQU *-RSMHD - LENGTH OF RSM HEADER 02269703 MEND , */ 02279703 * %RSMHPLS : ; 02300002 * /*******************************************************************/ 02302002 * /* REAL STORAGE MANAGEMENT HEADER */ 02304002 * /* 8/15/75 */ 02306040 * /* ONE RSM HEADER EXISTS FOR EACH CREATED VIRTUAL ADDRESS SPACE. */ 02310002 * /* IT RESIDES IN SQA AND IS ADDRESSED THROUGH THE ASCB. */ 02320002 * /* RSMHD CONTAINS ADDRESS SPACE RELATED POINTERS, DATA FIELDS, */ 02330002 * /* AND QUEUE HEADERS USED INTERNALLY BY RSM FUNCTIONS. */ 02340002 * /*******************************************************************/ 02342002 * %IF RSM9999 ^= ',' /* IF THIS IS LAST BLOCK */ 02344002 * %THEN %RSM9999 = ';'; /* THEN CLOSE DCL STATEMENT */ 02346002 * %IF RSMLEVEL ^= '' /* IF THIS IS CONCATENATED */ 02348002 * %THEN %GOTO RSMPLS1; /* THEN SKIP DCL */ 02348402 *DCL 1 RSMHD BASED (RSMHDPTR) /* DECLARE RSMHD LEVEL 1 */ 02350002 * %GO TO RSMPLS2; /* AND SKIP LEVEL TWO DCL */ 02360002 *%RSMPLS1: RSMDUM=RSMLEVEL||' RSMHDR'; /* SET LEVEL FOR MINOR STRUCT */ 02370002 * RSMDUM /* MINOR STRUCTURE NAME PARM */ 02380002 *%RSMPLS2:; 02390002 * BDY(WORD), 02392002 * 4 RSMVSTO PTR(31), /* VIRTUAL ADDRESS OF SGT ORIGIN */ 02400002 * 4 RSMSPCT PTR(31), /* VIRTUAL ADDRESS OF SWAP CONTROL 02430002 * TABLE */ 02460002 * 4 RSMASCB PTR(31), /* VIRTUAL ADDRESS OF ADDR SPACE 02510002 * CONTROL BLOCK (ASCB), USED BY 02520002 * RSM AS BACKWARD REFERENCE TO 02530002 * MAIN CONTROL BLOCK OF ADDR 02540002 * SPACE */ 02550002 * 4 RSMFLG1 BIT(8), /* FLAGS */ 02560002 * 8 RSMIOCPU BIT(1), /* WHEN 1, IOCP HAS BEEN 02570002 * SCHEDULED TO REQUEST THE LOCAL 02580002 * LOCK UNCONDITIONALLY BUT 02582002 * HAS NOT BEEN DISPATCHED. */ 02590002 * 8 RSMIOCPC BIT(1), /* WHEN 1, IOCP HAS BEEN 02592002 * SCHEDULED TO RUN WITHOUT 02594002 * THE LOCAL LOCK BUT 02599502 * HAS NOT BEEN DISPATCHED. */ 02605002 * 8 RSMGFAD BIT(1), /* GFA DEFER SCHEDULED FLAG. WHEN 02610502 * 1, GFA DEFER PROCESSOR HAS 02616002 * BEEN SCHEDULED. */ 02621502 * 8 RSMCPNU BIT(1), /* IOCP NOT SCHEDULED UNC FLAG. 02627003 * WHEN 1, IEAVIOCP MUST BE 02628003 * SCHEDULED TO REQUEST THE LOCAL 02629003 * LOCK UNCONDITIONALLY, BUT HAS 02630003 * NOT YET BEEN SCHED @Z30GNYD */ 02631003 * 8 RSMCPNC BIT(1), /* IOCP NOT SCHEDULED WITHOUT FLAG. 02632503 * WHEN 1, IEAVIOCP MUST BE SCHED- 02633503 * ULED TO RUN WITHOUT THE LOCAL 02634503 * LOCK, BUT HAS NOT YET BEEN 02635503 * SCHEDULED. @Z30GNYD */ 02636503 * 8 RSMGFADD BIT(1), /* GFAD NOT SCHEDULED FLAG. 02638040 * WHEN 1, IEAVGFAD MUST BE SCHED 02639040 * ULED, BUT HAS NOT BEEN SCHEDULED 02640040 * YET. @Z40WPYD */ 02641040 * 8 RSMFAIL BIT(1), /* RSM FAIL FLAG. WHEN 1, 02643540 * AN I/O ERROR OCCURED ON A LSQA 02644540 * PAGE SWAP-IN. @Z40WPYD */ 02645540 * 8 * BIT(1), /* RESERVED */ 02649002 * 4 RSMRSV1 CHAR(1), /* RESERVED @YA01572 */ 02654540 * 4 RSMCNTFX FIXED(15), /* NUMBER OF FRAMES FIXED IN THIS 02654740 * ADDRESS SPACE @YA01572 */ 02654940 * 4 RSMRSV2 CHAR(4), /* RESERVED @Z40WPYD */ 02655540 * 4 RSMQS BDY(WORD), /* BEGINNING OF LOCAL QUEUES */ 02702002 * 6 RSMLFQ CHAR(4) BDY (WORD), /* LOCAL FRAME QUEUE HEADER. 02710002 * REAL STORAGE FRAMES 02720002 * ASSIGNED TO PRIVATE AREA 02730002 * VIRTUAL PAGES, BOTH FIXED 02740002 * AND PAGEABLE */ 02742002 * 8 RSMLFQF BIT(16), /* INDEX TO FIRST PFTE ON Q */ 02760002 * 8 RSMLFQL BIT(16), /* INDEX TO LAST PFTE ON Q */ 02800002 * 6 RSMLSQA CHAR(4) BDY(WORD), /* LSQA QUEUE HEADER, REAL 02860002 * FRAMES ASSIGNED TO 02870002 * VIRTUAL LSQA PAGES */ 02880002 * 8 RSMLSQAF BIT(16), /* INDEX OF FIRST PFTE ON Q */ 02900002 * 8 RSMLSQAL BIT(16), /* INDEX OF LAST PFTE ON Q */ 02950002 * 6 RSMLIOQ CHAR(8) BDY(WORD), /* LOCAL I/O ACTIVE PCB Q 03160002 * HEADER. QUEUE REPRESENTS 03170002 * PAGING I/O REQUESTS FOR 03180002 * PRIVATE AREA PAGES THAT HAVE 03190002 * BEEN TRANSMITTED TO ASM. THE 03192002 * PCB REMAINS ON THE QUEUE 03194002 * UNTIL ALL PROCESSING FOR THE 03196002 * REQUEST BEEN COMPLETED. */ 03198402 * 8 RSMLIOQF PTR(31), /* VSA OF FIRST PCB ON Q */ 03200002 * 8 RSMLIOQL PTR(31), /* VSA OF LAST PCB ON Q */ 03250003 * 4 RSMFOEQ PTR(31), /* ADDR OF AVAIL. FOES @Z30CNYC*/ 03260040 * 4 RSMASMHD CHAR(32) RSM9999 /* AN ASM HEADER MAPPED BY 03262040 * ILRASMHD. @Z40WPYD*/ 03264040 * %RSMLEN = 'LENGTH(RSMHD)'; /* OBTAIN LENGTH OF RSMHD */ 03300002