* /* MACMEAN ASMH MEANS AUXILIARY STORAGE MANAGEMENT HEADER */ 00001040 * /* MACCOMP Y-4SC1CW/PZD81 */ 00002040 * /* MACSTAT Y-475078/415304 */ 00003040 */*A-000000-999999 @Z40WPWK*/ 00005040 */********************************************************************/ 00010040 */* */ 00015040 */* NAME: ILRASMHD */ 00020040 */* */ 00025040 */* FUNCTION: AUXILIARY STORAGE MANAGEMENT HEADER */ 00030040 */* */ 00035040 */* STATUS: OS/VS2 RELEASE 4.1, LEVEL 0 */ 00040040 */* */ 00045040 */* EXTERNAL REFERENCES: ASMHDPTR - USER DEFINED POINTER TO ASMHD */ 00050040 */* */ 00055040 */* REGISTERS USED: N/A */ 00060040 */* */ 00065040 */* REGISTERS CLOBBERED: N/A */ 00070040 */* */ 00075040 */* NOTES: THE ASMHD IS USED BY I/O CONTROL TO MANAGE PAGING I/O */ 00080040 */* AND SWAP OPERATIONS FOR EACH PRIVATE ADDRESS SPACE. VIO*/ 00085040 */* CONTROL ALSO USES THE ASMHD TO CONTROL ALL OPERATIONS */ 00090040 */* FOR VIO DATA SETS OWNED BY A PRIVATE ADDRESS SPACE. AN */ 00095040 */* ASMHD EXISTS FOR EACH ACTIVE ADDRESS SPACE. IT IS BUILT*/ 00100040 */* IN SQA AND REFERENCED VIA A POINTER IN THE ASCB. THE */ 00105040 */* FIELD NAMES ARE PREFIXED WITH ASH BECAUSE THE ASM PREFIX*/ 00110040 */* IS ALREADY USED FOR THE ASMVT. */ 00115040 */* */ 00120040 */* METHOD OF ACCESS: */ 00125040 */* PL/S - DECLARE ASMHDPTR PTR */ 00130040 */* % INCLUDE SYSLIB(ILRASMHD) */ 00131040 */* TO INCLUDE THE ASMHD IN ANOTHER STRUCTURE - */ 00135840 */* %ASH9999=',' */ 00136640 */* %ASHLEVEL='N' */ 00137140 */* WHERE N IS THE NUMBER TO BE USED AS THE */ 00138240 */* STRUCTURE LEVEL NUMBER. */ 00139040 */* THE LENGTH OF THE ASMHD MAY BE OBTAINED BY */ 00139340 */* REFERENCING THE MACRO VARIABLE ASHLEN. */ 00139640 */* BAL - DSECT=NO SHOULD BE SPECIFIED ON THE MACRO CALL */ 00140040 */* TO AVOID CREATING A DSECT. A USING ON ASMHD WILL*/ 00145040 */* ESTABLISH ADDRESSIBILITY FOR ALL SYMBOLS. */ 00150040 */* */ 00155040 */********************************************************************/ 00160040 * %GOTO ASHPLS; /* BILINGUAL HEADER 00165040 MACRO 00170040 ILRASMHD &DUMMY,&DSECT=YES 00175040 AIF ('&DSECT' EQ 'YES').ASMHD01 00180040 ASMHD DS 0F ASMHD CONTROL BLOCK 00185040 AGO .ASMHD02 CALL FOR BIT DEFINITION 00190040 .ASMHD01 ANOP 00195040 ASMHD DSECT , ASMHDPTR 00200040 .ASMHD02 SPACE 2 00205040 IEZBITS , 00210040 ASHFLAG1 DS B I/O CONTROL FLAGS 00225040 ASHSWPOT EQU BIT0 SWAP-OUT FLAG 00230040 * 1 = SWAP-OUT OPERATION IN 00235040 * PROGRESS 00240040 * 0 = NO SWAP-OUT IN PROGRESS 00245040 ASHCAPER EQU BIT1 SWAP CAPTURE QUEUE ERROR 00250040 * 1 = ONE OR MORE SWAP-OUT CAPTURE 00255040 * AIAS ON SWAP CAPTURE HAS SUFFERED 00260040 * AN I/O ERROR 00265040 * 0 = ALL AIAS ON SWAP CAPTURE 00270040 * QUEUE HAVE COMPLETED SUCCESSFULLY 00275040 ASHPERME EQU BIT2 PERMANENT SOFTWARE ERROR FLAG 00280040 * 1 = ONE OR MORE SWAP-OUT AIAS 00280640 * ON THE SWAP CAPTURE Q HAS AN 00281240 * UNRESTARTABLE SOFT ERROR 00281840 * 0 = ALL AIAS ON THE SWAP 00282440 * CAPTURE Q HAVE NO LOGICAL 00283040 * ERRORS 00283640 ASHRSV2 EQU BIT3 RESERVED 00285040 ASHRSV3 EQU BIT4 RESERVED 00290040 ASHRSV4 EQU BIT5 RESERVED 00295040 ASHRSV5 EQU BIT6 RESERVED 00300040 ASHRSV6 EQU BIT7 RESERVED 00305040 ASHFLAG2 DS B VIO CONTROL FLAGS 00310040 ASHSCHED EQU BIT0 SRB CONTROLLER SCHEDULED FLAG 00315040 * 1 = SRB CONTROLLER HAS BEEN 00320040 * SCHEDULED, BUT NOT DISPATCHED 00325040 * SRB FOR ADDRESS SPACE NOT 00330040 * AVAILABLE 00335040 * 0 = SRB FOR ADDRESS SPACE 00340040 * AVAILABLE 00345040 ASHRSV13 EQU BIT1 RESERVED 00350040 ASHRSV7 EQU BIT2 RESERVED 00375040 ASHRSV8 EQU BIT3 RESERVED 00380040 ASHRSV9 EQU BIT4 RESERVED 00385040 ASHRSV10 EQU BIT5 RESERVED 00390040 ASHRSV11 EQU BIT6 RESERVED 00395040 ASHRSV12 EQU BIT7 RESERVED 00400040 ASHSWPCT DS H COUNT OF STARTED BUT NOT COMPLETE 00405040 * LSQA SWAP-OUT AIAS 00410040 ASHBKSLT DS F NUMBER OF AUXILIARY STORAGE SLOTS 00411040 * RESERVED FOR THIS ADDRESS SPACE 00412040 ASHIOCNT DS F COUNT OF PRIVATE AREA AIA I/O 00415040 * REQUEST STARTED BUT NOT COMPLETE 00420040 ASHSWAPQ DS A SWAP QUEUE FOR AIAS, THIS QUEUE 00425040 * IS A HOLD QUEUE FOR LSQA AIAS 00430040 * DURING SWAP-OUT PROCESSING OF 00431040 * NON-LSQA I/O. 00432040 ASHCAPQ DS A SWAP CAPTURE QUEUE USED TO 00435040 * COLLECT I/O COMPLETE AIAS 00436040 * DURING LSQA SWAP-OUT 00437040 * PROCESSING 00438040 ASHLOCK DS F LOCK WORD FOR ASM CLASS LOCK, 00465040 * USED BY VIO CONTROL PROCESSING 00470040 ASHVSRBP DS A ADDRESS OF SRB USED BY VIO 00475040 * CONTROL TO DISPATCH THE SRB 00480040 * CONTROLLER. THIS POINTER IS ZERO 00485040 * IF NO VIO DATA SETS HAVE EVER 00490040 * BEEN USED BY THE ADDRESS SPACE. 00495040 * ONCE CREATED, THE SRB IS NOT 00500040 * FREED UNTIL ADDRESS SPACE 00505040 * TERMINATION 00510040 ASHLGEQ DS A ADDRESS OF FIRST LGE IN QUEUE 00515040 * OF LGES FOR VIO DATA SETS 00520040 MEND 00530040 * */ 00535040 *%ASHPLS:; /* PLS COMPILE TIME TARGET */ 00540040 * %IF ASH9999 ^= ',' /* IF THIS IS LAST BLOCK */ 00540840 * %THEN ASH9999 = ';'; /* THEN CLOSE DCL STATEMENT */ 00541640 * %IF ASHLEVEL ^= '' /* IF THIS IS CONCATENATED */ 00542440 * %THEN %GOTO ASHPLS1; /* THEN SKIP DCL STATEMENT */ 00543240 *DECLARE 00545040 * 1 ASMHD BASED(ASMHDPTR) BDY(WORD), /* ASM HEADER */ 00550040 * %GOTO ASHPLS2; /* SKIP LEVEL 2 DECLARE */ 00551040 *%ASHPLS1: 00552040 * ASHNUM = ASHLEVEL || ' ASMHD BDY(WORD),'; /* SET MINOR LEVEL */ 00553040 * ASHNUM /* STRUCTURE */ 00554040 *%ASHPLS2:; 00555040 * 4 ASHFLAG1 BIT(8), /* I/O CONTROL FLAGS */ 00565040 * 6 ASHSWPOT BIT(1), /* SWAP-OUT FLAG 00568040 * 1 = SWAP-OUT OPERATION IN 00575040 * PROGRESS 00580040 * 0 = NO SWAP-OUT IN PROGRESS */ 00585040 * 6 ASHCAPER BIT(1), /* SWAP CAPTURE QUEUE ERROR 00590040 * 1 = ONE OR MORE SWAP-OUT AIAS 00595040 * ON SWAP CAPTURE QUEUE HAS 00600040 * SUFFERED AN I/O ERROR 00605040 * 0 = ALL AIAS ON SWAP CAPTURE 00610040 * QUEUE HAVE COMPLETED 00615040 * SUCCESSFULLY */ 00620040 * 6 ASHPERME BIT(1), /* PERMANENT SOFTWARE ERROR FLAG 00625040 * 1 = ONE OR MORE SWAP-OUT AIAS 00625540 * ON THE SWAP CAPTURE Q HAS AN 00626040 * UNRESTARTABLE SOFT ERROR 00626540 * 0 = ALL AIAS ON THE SWAP 00627040 * CAPTURE Q HAVE NO LOGICAL 00627540 * ERRORS */ 00628040 * 6 ASHRSV2 BIT(1), /* RESERVED */ 00629040 * 6 ASHRSV3 BIT(1), /* RESERVED */ 00633040 * 6 ASHRSV4 BIT(1), /* RESERVED */ 00637040 * 6 ASHRSV5 BIT(1), /* RESERVED */ 00641040 * 6 ASHRSV6 BIT(1), /* RESERVED */ 00645040 * 4 ASHFLAG2 BIT(8), /* VIO CONTROL FLAGS */ 00649040 * 6 ASHSCHED BIT(1), /* SRB CONTROLLER SCHEDULED FLAG 00653040 * 1 = SRB CONTROLLER HAS BEEN 00665040 * SCHEDULED, BUT NOT DISPATCHED 00670040 * SRB FOR ADDRESS SPACE NOT 00675040 * AVAILABLE 00680040 * 0 = SRB FOR ADDRESS SPACE 00685040 * AVAILABLE */ 00690040 * 6 ASHRSV13 BIT(1), /* RESERVED */ 00695040 * 6 ASHRSV7 BIT(1), /* RESERVED */ 00725040 * 6 ASHRSV8 BIT(1), /* RESERVED */ 00729040 * 6 ASHRSV9 BIT(1), /* RESERVED */ 00733040 * 6 ASHRSV10 BIT(1), /* RESERVED */ 00737040 * 6 ASHRSV11 BIT(1), /* RESERVED */ 00741040 * 6 ASHRSV12 BIT(1), /* RESERVED */ 00745040 * 4 ASHSWPCT FIXED(15), /* COUNT OF STARTED BUT NOT 00749040 * COMPLETE LSQA SWAP-OUT AIAS */ 00760040 * 4 ASHBKSLT FIXED(31), /* NUMBER OF AUXILIARY STORAGE 00761040 * SLOTS RESERVED FOR THIS 00762040 * ADDRESS SPACE */ 00763040 * 4 ASHIOCNT FIXED(31), /* COUNT OF PRIVATE AREA AIA I/O 00765040 * REQUEST STARTED BUT NOT 00770040 * COMPLETE */ 00775040 * 4 ASHSWAPQ PTR(31), /* SWAP QUEUE FOR AIAS, THIS 00780040 * QUEUE IS A HOLD QUEUE FOR 00780840 * LSQA AIAS DURING SWAP-OUT 00781640 * PROCESSING OF NON-LSQA I/O */ 00782440 * 4 ASHCAPQ PTR(31), /* SWAP CAPTURE QUEUE USED TO 00783240 * COLLECT I/O COMPLETE AIAS 00785040 * DURING LSQA SWAP-OUT 00786040 * PROCESSING */ 00787040 * 4 ASHLOCK FIXED(31), /* LOCK WORD FOR ASM CLASS LOCK, 00820040 * USED BY VIO CONTROL 00825040 * PROCESSING */ 00830040 * 4 ASHVSRBP PTR(31), /* ADDRESS OF SRB USED BY VIO 00835040 * CONTROL TO DISPATCH THE SRB 00840040 * CONTROLLER. THIS POINTER IS 00845040 * ZERO IF NO VIO DATA SETS HAVE 00850040 * EVER BEEN USED BY THE ADDRESS 00855040 * SPACE. ONCE CREATED, THE SRB 00860040 * IS NOT FREED UNTIL ADDRESS 00865040 * SPACE TERMINATION */ 00870040 * 4 ASHLGEQ PTR(31) ASH9999 /* ADDRESS OF FIRST LGE IN QUEUE 00875040 * OF LGES FOR VIO DATA SETS */ 00880040 * %ASHLEN = 'LENGTH(ASMHD)'; /* OBTAIN LENGTH OF ASMHD */ 00930040