|
When utilizing the ASYNC=EXIT option of the EZASMI macro, the following
requirements need to be considered:
- Asynchronous calls can only be issued from a single request block
(RB) in a given task (TCB).
The first RB that issues an ASYNC EZASMI
call under a given task is deemed as the target RB that is interrupted
when an asynchronous exit needs to be driven. This means that after
an asynchronous EZASMI macro call is invoked you should not invoke
any services that cause the current RB to no longer be the top RB
for this task (for example, a LINK call). If the target RB is no longer
the top RB at the time that the exit needs to be driven, then the
exit is deferred until the target RB becomes the top RB. One exception
to this rule is that EZASMI calls can be issued under the asynchronous
user exit.
- EZASMI macro calls within the asynchronous exits.
While running
the asynchronous exit notification routine, an application can issue
other EZASMI calls. However, the application should avoid issuing
any blocking calls and should not enter into long delays. Doing so
delays any additional exits from being driven and also blocks the
TCB that made the original call. Note that TERMAPI should not be issued
under the asynchronous exit.
- Linkage stack.
Applications issuing EZASMI macro asynchronous
exit calls should not issue any PC instructions that cause the system
linkage to be used. Doing so delays the asynchronous exits from being
driven until the linkage stack entry is removed. If the linkage stack
entry is not removed, the exit will not be driven.
- Asynchronous exits are given control in the same key as the program
status word (PSW) key of the TCB from which the EZASMI call was issued.
|