* % GOTO PIRPLS; /* GO TO THE PLS VERSION */ 00050021 MACRO 00100021 IECDPIRL &DSECT=YES 00150002 AIF ('&DSECT' EQ 'NO').PIRL1 00160002 PIRL DSECT 00200021 AGO .PIRL2 00210002 .PIRL1 ANOP 00220002 PIRL DS 0D 00230002 .PIRL2 ANOP 00240002 SPACE 1 00250021 **************************************************************** 00300021 * * 00350021 * THIS DSECT DESCRIBES THE PURGED I/O RESTORE LIST WHICH IS * 00400002 * BUILT IN SUBPOOL ZERO OF THE MEMORY OF THE REQUESTOR OF * 00450021 * PURGE. PURGE OBTAINS THE SPACE FOR THE PIRL AND RESTORE * 00500021 * RETURNS IT. THE POINTER TO THE PIRL IS PASSED TO RESTORE * 00550021 * AS A PARAMETER IN REGISTER 1. * 00600021 * * 00650021 **************************************************************** 00700021 SPACE 1 00750021 DS 0F 00800021 PIROPT DS XL1 RESTORE OPTION BYTE 00850021 SPACE 1 00900021 * BIT DEFINITIONS FOR PIROPT 00950021 SPACE 1 01000021 PIROTCB EQU X'80' RESTORE REQUESTS TO THE TCB 01050021 * THAT ORIGINATED THE REQUEST 01100021 * INSTEAD OF THE TCB USED TO 01150021 * RESTORE THEM. 01200021 PIRSUPCK EQU X'40' DO TCB VALIDITY CHECK REGARD 01210021 * LESS OF THE STATE OF 01220002 * THE CALLER. 01230021 * EQU X'7F' RESERVED - MUST BE ZERO 01250021 PIRCNT DS XL1 NUMBER OF PIRRSTR ENTRIES 01300021 * DS H RESERVED - MUST BE ZERO 01350021 PIRRSTR DS A POINTER TO I/O REQUEST LIST 01400021 * FOR EACH DRIVER OF CHANNEL 01450021 * SCHEDULER. 01500021 PIRDVRU DS A POINTER TO ADDITIONAL 01510021 * INFORMATION THE DRIVER 01520021 * MAINTAINS TO INSURE THE 01530021 * PROPER RESTORATION OF ITS 01540021 * QUEUE OF I/O REQUESTS 01542021 * (E.G. PROTECT KEYS TCB 01544021 * ADDRESSES ETC) 01546021 PIRENTL EQU *-PIRRSTR ENTRY LENGTH 01550021 MEND 01600021 *%PIRPLS: ; 01650021 * /************************************************************/ 01800021 * /* */ 01810021 * /* THIS STRUCTURE DESCRIBES THE PURGED I/O RESTORE LIST */ 01820002 * /* WHICH IS BUILT IN SUBPOOL 0 OF THE MEMORY OF THE RE- */ 01870021 * /* QUESTOR OF PURGE. PURGE OBTAINS THE SPACE FOR THE PIRL */ 01880021 * /* AND RESTORE RETURNS IT. THE POINTER TO THE PIRL IS */ 01890021 * /* PASSED AS A PARAMETER TO RESTORE IN REGISTER 1. */ 01940021 * /* */ 02100021 * /************************************************************/ 02160021 * 02200021 * DCL 1 PIRL BDY(WORD) BASED(PIRLPTR), 02210021 * 2 PIROPT BIT(8), /* RESTORE OPTION BYTE */ 02250021 * 2 PIRCNT CHAR(1), /* NMBR OF PIRRSTR ENTRIES */ 02500021 * 2 * FIXED(15), /* RESERVED - MUST BE 0 */ 02550021 * 2 PIRRSTR PTR(31), /* POINTER TO I/O REQUEST 02600002 * LIST FOR EACH DRIVER OF 02650002 * THE CHANNEL SCHEDULER */ 02700002 * 2 PIRDVRU PTR(31), /* POINTER TO ADDITIONAL 02710002 * INFORMATION THE DRIVER 02720002 * MAINTAINS TO INSURE THE 02730002 * PROPER RESTORATION OF 02740002 * ITS QUEUE OF REQUESTS 02742002 * (E.G. PROTECT KEYS TCB 02744002 * ADDRESSES ETC ) */ 02746002 * 2 PIREND CHAR(0); /* END OF PIRL */ 02750021 * 02760021 * /* FOLLOWING ARE BIT DEFINITIONS OF PIROPT */ 02770021 * 02780021 * DCL PIROTCB BIT(8) CONSTANT('80'X); 02790021 * /* RESTORE REQUEST TO THE 02792002 * ORIGINATING TCB INSTEAD 02794002 * OF THE RESTORING TCB */ 02796002 * DCL PIRSUPCK BIT(8) CONSTANT('40'X); 02798021 * /* DO TCB VALIDITY CHECK 02798402 * REGARDLESS OF THE STATE 02798802 * OF THE CALLER */ 02799202 *%DCL PIRENTL CHAR; /* ENTRY LENGTH OF PIRRSTR */ 02800021 *%PIRENTL='ADDR(PIREND)-ADDR(PIRRSTR)'; 02850021