* % GOTO IPIBPLS; /* GO TO PLS VERSION */ 00050021 MACRO 00100021 IECDIPIB &DSECT=YES 00150002 AIF ('&DSECT' EQ 'NO').IPIB1 00160002 IPIB DSECT 00200021 AGO .IPIB2 00210002 .IPIB1 ANOP 00220002 IPIB DS 0D 00230002 .IPIB2 ANOP 00240002 SPACE 1 00250021 **************************************************************** 00300021 * * 00350021 * THIS DSECT DESCRIBES THE IOS PURGE INTERFACE BLOCK WHICH * 00400021 * IS BUILT IN THE PURGE WORK AREA. IT IS USED TO HOLD ALL * 00420021 * THE INFORMATION THAT IS COMMUNICATED BETWEEN PURGE AND * 00430021 * THE CHANNEL SCHEDULER AND ITS DRIVERS. * 00440021 * * 00450021 **************************************************************** 00500021 SPACE 1 00550021 IPIBOPT DS XL1 OPTIONS NEEDED BY DRIVERS 00600021 * FOR CHANNEL SCHEDULER WHEN 00650021 * PURGING THEIR QUEUES. 00700021 IPIBMEM EQU X'80' ASID PURGE WAS SPECIFIED 00750002 IPIBTASK EQU X'40' TCB PURGE WAS SPECIFIED IF 00800021 * ASID PURGE WAS NOT 00850002 * SPECIFIED 00900021 IPIBRBP EQU X'20' RB PURGE SPECIFIED 00910002 IPIBPOST EQU X'10' POST THE ECBS RELATED TO THE 00950021 * I/O REQUESTS THAT ARE PURGED 01000021 IPIBREL EQU X'08' PURGE ONLY REQUESTS THAT ARE 01050021 * MARKED RELATED 01100021 IPIBHALT EQU X'04' HALT I/O REQUESTS - DO NOT 01150021 * BUILD A CHAIN FOR RESTORE 01200021 IPIBOTCB EQU X'02' PURGE SO THAT I/O REQUESTS 01210021 * MAY BE RESTORED TO THE 01230021 * ORIGINATING TCB 01240021 SPACE 1 01250021 IPIBDVID DS XL1 DRIVER ID FOR DSID PURGE DCRR 21082 01260002 * DEFAULT VALUE OF X'00' DCRR 21082 01270002 * IMPLIES EXCP DCRR 21082 01280002 IPIBFLG1 DS XL1 FLAG BYTE @ZA12676 01284000 IPIBDQ EQU X'80' INDICATES PURGEDQ ISSUED BY 01288000 * IGC0001F @ZA12676 01292000 IPIBTIME EQU X'40' INDICATOR TO SHOW THAT QUIESCE 01293300 * IS BEING TIMED. @ZA50027 01294600 IPIBPBUV EQU X'20' INDICATOR TO SHOW THAT PURGE BY UCB 01295000 * VALIDITY CHECK DONE. @ZA52611 01295400 DS XL1 RESERVED @ZA12676 01296000 IPIBCNT DS A COUNT OF I/O REQUESTS TO BE 01350021 * COMPLETED. DECREMENTED BY 01400021 * IOS DRIVERS WHEN I/O EVENT 01450021 * COMPLETES 01460021 IPIBECB DS A ECB TO BE POSTED WHEN IPIBCNT 01500021 * GOES TO ZERO. PURGE WAITS ON 01550021 * THIS ECB WHEN THE COUNT IS 01600021 * ESTABLISHED. 01650021 IPIBARG DS A PURGE ARGUMENT. IF ASID 01700002 * PURGE, THE RIGHT TWO BYTES 01750021 * CONTAIN THE ASID OF THE ASID 01800002 * BEING PURGED AND THE LEFT 01850002 * TWO BYTES CONTAIN THE SIGN 01860021 * BIT OF THE ASID. IF TCB 01870021 * PURGE, THEN THE TCB ADDRESS. 01900021 * IF DSID PURGE, THEN THE DSID 01916600 * ADDRESS. 01933200 IPIBSRB DS A POINTER TO FIRST SRB ON CHAIN 01950021 * OF SRBS THAT HAVE BEEN COL- 02000021 * LECTED FOR RETURN TO THE 02050021 * APPROPRIATE DRIVER OF THE 02100021 * CHANNEL SCHEDULER. 02150021 IPIBIO DS A POINTER TO I/O REQUEST CHAIN 02200021 * RETURNED TO PURGE FOR PLACE- 02250021 * MENT ON THE PIRL. 02300021 IPIBDVRU DS A POINTER TO ADDITIONAL INFOR- 02310021 * MATION THE DRIVER MAINTAINS 02320021 * INSURE TO THE PROPER RESTOR- 02340021 * ATION OF ITS QUEUE OF I/O 02344021 * REQUESTS (E.G.PROTECT KEYS 02346021 * TCB ADDRESSES ETC) 02348021 IPIBPIRL DS A POINTER TO PIRL FOR THIS 02350021 * PURGE REQUEST. 02400021 IPIBPSQ DS A POINTER TO CHAIN OF I/O RE- 02450021 * QUESTS INVOLVED WITH THIS 02500021 * PURGE FOUND BY ROUTINES RUN- 02550021 * NING ASYNCHRONOUSLY WITH THE 02600021 * PURGE ROUTINE (E.G. THE IN- 02650021 * TERRUPT HANDLER). 02700021 IPIBLNK DS A MAY BE A MAX OF 2 IPIBS/ASID@YM07220 02710002 * IF SO, THIS POINTS TO 2ND @YM07220 02720000 * IPIB WHICH MUST BE A HALT OR = 0 02730002 IPIBASCB DS A ASCB ADDRESS FOR MEMORY IN @ZA30265 02736000 * WHICH PURGE WAS ISSUED @ZA30265 02742000 IPIBIPIB DS CL4 CONTROL BLOCK ACRONYM @ZA46714 02744600 * IN EBCDIC. @ZA46714 02747200 IPIBPASS DS XL4 IPIB PASS COUNT. @ZA50027 02748600 * 02748800 IPIBARG2 DS A IF A PURGE BY UCB FUNCTION @ZA52611 02749000 * CONTAINS THE UCB ADDRESS AS @ZA52611 02749200 * SECOND ARGUMENT ON DRIVER @ZA52611 02749400 * CALL. @ZA52611 02749600 MEND 02750021 *%IPIBPLS: ; 02800021 * 02850021 * /************************************************************/ 02900021 * /* */ 02950021 * /* THIS STRUCTURE DESCRIBES THE IOS PURGE INTERFACE BLOCK */ 03000021 * /* WHICH IS BUILT IN THE PURGE WORK AREA . IT IS USED TO */ 03002021 * /* HOLD ALL THE INFORMATION THAT IS COMMUNICATED BETWEEN */ 03004021 * /* PURGE AND THE CHANNEL SCHEDULER AND ITS DRIVERS. */ 03014021 * /* */ 03050021 * /************************************************************/ 03100021 * 03150021 *DCL 1 IPIB BDY(WORD) BASED(IPIBPTR), 03160021 * 2 IPIBOPT BIT(8), /* OPTIONS NEEDED BY DRVRS 03200002 * OF CHANNEL SCHEDULR WHEN 03250002 * PURGING THEIR QUEUES */ 03300002 * 3 IPIBMEM BIT(1), /* ASID PURGE WAS SPECFD */ 03350002 * 3 IPIBTASK BIT(1), /* TCB PURGE WAS SPECIFIED 03400002 * IF ASID PURGE WAS NOT */ 03450002 * 3 IPIBRBP BIT(1), /* RB PURGE SPECIFIED */ 03500002 * 3 IPIBPOST BIT(1), /* POST THE ECBS RELATED TO 03550002 * THE I/O REQUESTS THAT 03600002 * ARE PURGED */ 03650002 * 3 IPIBREL BIT(1), /* PURGE ONLY REQUESTS THAT 03700002 * ARE MARKED RELATED */ 03702002 * 3 IPIBHALT BIT(1), /* HALT I/O REQUESTS - DO 03710002 * NOT BUILD A CHAIN FOR 03720002 * RESTORE */ 03722002 * 3 IPIBOTCB BIT(1), /* PURGE SO I/O REQUESTS 03730002 * MAY BE RESTORED TO THE 03740002 * ORIGINATING TCB */ 03750002 * 3 * BIT(1), /* RESERVED */ 03770021 * 03820021 * 2 IPIBDVID CHAR(1), /* DRIVER ID FOR DSID PURGE 03830002 * DEFAULT VALUE OF X'00' 03840002 * IMPLIES EXCP DCRR 21082*/ 03850002 * 2 IPIBFLG1 BIT(8), /* FLAG BYTE @ZA12676*/ 03854000 * 3 IPIBDQ BIT(1), /* IGC0001F ISSUED PURGEDQ 03856000 * @ZA12676*/ 03858000 * 3 IPIBTIME BIT(1), /* INDICATOR TO SHOW THAT QUIESCE 03860000 * IS BEING TIMED. @ZA50027*/ 03862000 * 3 IPIBPBUV BIT(1), /* INDICATOR TO SHOW PURGE BY UCB 03863000 * VALIDITY CHECK DONE. @ZA52611*/ 03864000 * 3 * BIT(5), /* RESERVED @ZA12676*/ 03865000 * 2 * CHAR(1), /* RESERVED @ZA12676*/ 03866000 * 2 IPIBCNT CHAR(4), /* COUNT OF I/O REQUESTS TO 03920002 * BE COMPLETED. DECREMENTD 03970002 * BY IOS DRIVERS WHEN 04020002 * I/O EVENT COMPLETES */ 04070002 * 2 IPIBECB PTR(31), /* ECB TO BE POSTED WHEN 04120002 * IPIBCNT GOES TO ZERO. 04170002 * PURGE WAITS ON THIS ECB 04220002 * WHEN COUNT IS ESTABLISHD*/ 04270002 * 2 IPIBARG PTR(31), /* PURGE ARGUMENT. IF ASID 04320002 * PURGE, THE RIGHT 2 BYTES 04370002 * CONTAIN THE ASID OF THE 04420002 * ASID BEING PURGED AND 04470002 * THE LEFT TWO BYTES HAVE 04480002 * THE SIGN BIT OF THE ASID. 04490000 * IF TCB PURGE, THEN THE 04520002 * TCB ADDRESS. IF DSID PURGE 04553300 * THEN THE DSID ADDRESS */ 04586600 * 2 IPIBSRB PTR(31), /* PTR TO FIRST SRB ON CHN 04620002 * OF SRBS THAT HAVE BEEN 04670002 * COLLECTED FOR RETURN TO 04720002 * THE APPROPRIATE DRIVER 04770002 * OF THE CHANNL SCHEDULER */ 04820002 * 2 IPIBIO PTR(31), /* PTR TO I/O REQUEST CHAIN 04870002 * RETURNED TO PURGE FOR 04920002 * PLACEMENT ON THE PIRL */ 04970002 * 2 IPIBDVRU PTR(31), /* PTR TO ADTNL INFO EACH 04980002 * DRIVER MAINTNS TO INSURE 04990002 * PROPER RESTORATN OF ITS 05000002 * QUEUE OF REQUESTS (E.G. 05012002 * PROTECT KEYS - TCB ADDR) 05014002 * RETURNED TO PURGE FOR 05016002 * PLACEMENT ON THE PIRL */ 05018002 * 2 IPIBPIRL PTR(31), /* PTR TO PIRL FOR THIS 05020002 * PURGE REQUEST */ 05070002 * 2 IPIBPSQ PTR(31), /* PTR TO CHAIN OF I/O REQ. 05120002 * INVOLVED WITH THIS PURGE 05170002 * FOUND BY ROUTINES RUNNG 05220002 * ASYNCHRONOUSLY WITH THE 05270002 * PURGE ROUTINE (E.G. THE 05320002 * INTERRUPT HANDLER). */ 05350000 * 2 IPIBLNK PTR(31), /* PTS TO 2ND IPIB IF 2, 05380000 * EITHER PTS TO HALT IPIB 05390000 * OR =0, MAX OF 2 IPIBS @YM07220*/ 05400000 * 2 IPIBASCB PTR(31), /* ASCB ADDRESS FOR 05420000 * MEMORY IN WHICH PURGE 05470000 * WAS ISSUED @ZA30265*/ 05520000 * 2 IPIBIPIB CHAR(4) BDY(WORD),/* CONTROL BLOCK 05570000 * ACRONYM IN EBCDIC. @ZA46714*/ 05620000 * 2 IPIBPASS PTR(31), /* IPIB PASS COUNT. @ZA50027*/ 05645000 * 05670000 * 2 IPIBARG2 PTR(31), /* IF PURGE BY UCB CONTAINS 05678300 * ADDRESS OF UCB TO USE AS 05686600 * SECOND ARGUMENT ON DRIVER 05694900 * CALL. @ZA52611*/ 05703200 * 05711500 * 2 IPIBEND CHAR(0); /* END OF IPIB */ 05720003