On Fri, Oct 16, 2015 at 6:27 AM, michealbutz <[email protected]> wrote:
> Hi > > The documentation says that IEAVAPE2/IEAVPSE2 Can pause any Task or Srb in > the system > > I got/allocated stoken or ASSBSTKN of the target address space I wanted to > pause via IEAVAPE2 successful return code > > When I tried to run IEAVPSE2 the service never returned fronm the BALR it > just hung (this was with the linakge branch parm) > > I ran this under TESTAUTH (to ensure everything was correct) > > When I cancelled the target address space IEAVPSE2 returned from the balr > with a zero return code > > The documentation seemed to indcate I could this pause another address > space > Can you give a reference? I ask because I read here: https://www-01.ibm.com/support/knowledgecenter/SSLTBW_2.1.0/com.ibm.zos.v2r1.ieaa200/ieavpse.htm <quote> IEAVPSE2 — Pause service Description Call Pause to make the current task or SRB nondispatchable. When you pause a task or SRB, it remains nondispatchable until a Release or Transfer specifying the same PET is called. That is, the program issuing the Pause does not receive control back until after the Release or Transfer occurs. At that time, the returned release_code will contain a value supplied by the associated Release or Transfer request. If a Release service specifying the same PET is called before Pause, the system returns control immediately to the calling program, and the task or SRB is not paused. When you use Pause, it returns an updated PET; you use this updated PET to either deallocate or reuse the PE. </quote> Reading this, I take it to mean that the "dispatchable unit" which issues the IEAVPSE2 call is the one which is paused. I gather what you want is a way for a program ("A") in one address space (ASID1) to pause a different program ("B") in a different address space. If I may, a kind of remote control ON/OFF switch. Again, just from reading & not experience, a normal PE (IEA_PET_UNAUTHORIZED) is created by and can be used in only a single address space. But an APF program can create an "any address space" PE (IEA_PET_AUTHORIZED) which can be used by an APF program in _any_ address space to pause _itself_ (not another). This latter allows APF program "A" in ASID1 to do the IEAVPSE2 to pause itself. And then APF program "B" in ASID2 can do an IEAVRLS2 to allow program "A" to start running again. I guess this is the equivalent of a cross memory POST. It also allows that PET to be used by any address space (serially) in the system, rather that just a program running in the address space which allocated the PE. Am I reading you correctly? You want some way for program "A" (ASID 1) to just cause program "B" (ASID 2) to stop immediately, where ever it is, without program "B" doing anything to allow/disallow it. This reminds me, vaguely, of doing a STATUS STOP on a child TCB to "put the brakes on" for that child TCB, without the program in the child doing anything. I don't think that pause / release / transfer is the function you want. And, before you ask, I don't know of a way to do this. Well, not a nice GUPI way. Especially if you want to stop an SRB's execution. Of course, you could schedule an SRB into the proper address space, have it schedule a CIRB to run on a given TCB which would then issue the IEAVPSE2. Or just cheat by going key 0 and setting the target address space non-dispatchable by messing with it's ASCB. I now expect a nasty note from Mr. Relson about the undesirability of doing this. Please don't try this with *MASTER* or CONSOLE or ???? > Thanks > > -- Schrodinger's backup: The condition of any backup is unknown until a restore is attempted. Yoda of Borg, we are. Futile, resistance is, yes. Assimilated, you will be. He's about as useful as a wax frying pan. 10 to the 12th power microphones = 1 Megaphone Maranatha! <>< John McKown ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
