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

Reply via email to