HI I have tested my recovery routines in many different scenarios. My last step was to test a asynchronous exit or an IRB. Since many people have told I don't post my code I'll do so now.
I have tested the asynchronous exit or IRB and it has gotten control however
when I insert H'0' it abends with without the recovery getting control
I take the current TCB or PSATOLD (the same one that was active when I
established the estate and save it in IQETCB so since the IRB runs under the
same TCB that established the estate it (the recovery program) should get
control
The local lock is held however I don't think the should stop the estate from
getting control
*+--------------------------------------------------------------------+
MODULE CESTAE,BASE=12,LOC=BELOW,AMODE=31,RMODE=ANY, X
TEXT=' ESTABLISH AN ESTAEX ROUTINE'
* *---------------------------------------*
* * LOAD THE ESTAE ROUTINE *
* *---------------------------------------*
MODESET KEY=ZERO,MODE=SUP
LOAD EP=GRECOV,ERRET=EXIT0C LOAD THE ESTAEX ROUTINE
LR R3,R0 ADDRESS OF ESTAEX ROUTINE TO R3
* *---------------------------------------*
* * BUILD PARMLIST FOR ESTAEX ROUTINE *
* *---------------------------------------*
LAE R4,ESTPARAM ADDRESS OF PARMS FOR ESTAE RTN
USING ESTPARM,R4 MAP ESTAE PARMLIST
LAE R15,RETRY RETRY ADDRESS
ST R15,ESTRETRY SAVE IN PARMS FOR ESTAE ROUTINE
* *---------------------------------------*
* * UNCOMMENT THE FOLLOWING 2 LINES *
* * IF THIS MODULE EXECUTES IN *
* * SUPERVISOR STATE. *
* *---------------------------------------*
ST R12,ESTLOAD ENTRY POINT TO ESTAE PARMLIST
MVC ESTMOD(8),=CL8'CESTAE' MODULE NAME TO ESTAE PARMLIST
* *---------------------------------------*
* * ISSUE THE ESTAEX MACRO *
* *---------------------------------------*
ESTAEX (R3),PARAM=(R4),MF=(E,ESTAELST)
* *---------------------------------------*
* * THE FOLLOWING 4 INSTRUCTIONS *
* * REPRESENTS THE REST OF THE *
* * PROCESSING IN THIS MODULE. *
* * AN ERROR WILL CAUSE RTM TO INVOKE *
* * AN ERROR WILL CAUSE RTM TO INVOKE *
* * THE ESTAEX ROUTINE. *
* *---------------------------------------*
* DC H'0'
B IRBERR
ENDMOD RESTORE REGISTERS AND RETURN
IRBERR DS 0H
LOAD EP=IRBPTR
LR R5,R0
* O R5,=X'80000000'
ST R5,IRBADD
*
USING PSA,0
L R4,PSATOLD
*
*
*
SETLOCK OBTAIN,TYPE=LOCAL,MODE=UNCOND,REGS=STDSAVE
*
CIRB EP=(R5), X
RETIQE=YES, X
STAB=DYN, X
MODE=SUPR, X
KEY=SUPR, X
WKAREA=255, X
BRANCH=YES, X
AMODE=DEFINED
*
USING RBBASIC,R1
L R5,RBNEXAV Get IQE Pointer
USING IQESECT,R5
ST R5,IQEADD
ST R1,IQEIRB
LA R15,PLIST
ST R15,IQEPARAM
ST R4,IQETCB
*
*
*
SCHEDIRB IQEPTR=IQEADD, X
MF=(E,IRBLST)
*
SETLOCK RELEASE,TYPE=LOCAL,REGS=STDSAVE
B EXIT
* Here is my IRB rtn as you can see I inserted a H'0' upfront
* When I take the H'0' out the IRB routine gets control and runs
till the end
*
IRBPTR CSECT
IRBPTR AMODE 31
IRBPTR RMODE ANY
YREGS
*
* STM R14,R12,12(R13)
LR R5,R15
LR R11,R14
DC H'0'
Thanks
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN
