Call IEA4XFR2 service to release a paused task or SRB, and, when possible, give the task or SRB immediate control. This service can also, optionally, pause the task or SRB under which the transfer request is made. If the caller does not request that its task or SRB be paused, the caller's task or SRB remains dispatchable.
The requirements for the caller are:
Environmental factor | Requirement |
---|---|
Minimum authorization: | Problem state and any PSW key |
Dispatchable unit mode: | Task |
Cross memory mode: | PASN=HASN=SASN |
AMODE: | 64-bit |
ASC mode: | Primary mode. |
Interrupt status: | Enabled for I/O and external interrupts. |
Locks: | No locks held. |
Control parameters: | Must be in the primary address space and addressable by the caller. |
Either link the calling program's object code with the linkable stub routine (IEA4CSS from SYS1.CSSLIB) or load the calling program and then call the service. The high-level language (HLL) definitions for the callable service are:
HLL Definition | Description |
---|---|
IEAASM | 390 Assembler declarations |
IEAC | C/390 and C++/390 declarations |
Pause elements that are created with pause_element_auth_level=IEA_UNAUTHORIZED may only be used by callers in task mode and can only be released from a task in their home address space.
Transfer cannot be used by tasks that are higher in the task tree than the cross memory resource owning task (the top, or first, job step task in the address space).
Some callers depend on register contents remaining the same before and after issuing a service. If the system changes the contents of registers on which the caller depends, the caller must save them before issuing the service, and restore them after the system returns control.
None.
Syntax | Description |
---|---|
SYSSTATE AMODE64=YES | |
CALL IEA4XFR2 |
|
The parameters are explained as follows:
Contains the return code from the Transfer service.
Contains a pause element token that identifies the pause element that is being or will be used to pause a task or SRB. When a PET is used on a call to the pause service, it cannot be reused on a second call to pause or as a current_du_pause_element_token on transfer. A new PET is returned to update_pause_element_token. The new PET now properly defines the pause element and should be used the next time when a pause, transfer, release, or deallocate_pause_element request is using the same pause element.
If the value specified is 16-bytes of binary zeros, the current task or SRB will not be paused. The updated_pause_element_token and current_du_release_code are unpredictable.
Contains a new pause element token that identifies the pause element originally identified by the PET specified in current_du_pause_element_token. The PET originally specified in current_du_pause_element_token cannot be reused after a successful call to Pause or Transfer.
If you set the current_du_pause_element_token to zeros, the contents of updated_pause_element_token are unpredictable.
Contains the release code set by the issuer of the release or transfer service that released the current task or SRB from the paused condition.
If you set the current_du_pause_element_token to zero, the contents are unpredictable.
Contains a pause element token that identifies a pause element that is being or will be used to pause a task or SRB. If the task or SRB is paused, it will be released, and, if possible, be given control. If the task or SRB is not paused using the specified pause element, it will not be paused when an attempt to pause is made. In either case the task or SRB will be returned the value specified in target_release_code.
Contains the release code returned to the caller of the pause or transfer service used (or will use) the PET specified in target_du_pause_element_token to pause a task or SRB.
Specifies how the Transfer service routine is to be invoked. The following options are supported:
Variable | Value (hexadecimal) | Meaning |
---|---|---|
IEA_LINKAGE_SVC | 0 | The Transfer service routine will be invoked by an SVC linkage. This option can be used when in non-cross memory task mode, in any key, and either problem state or supervisor state. |
IEA_LINKAGE_BRANCH | 1 | The Transfer service routine will be invoked by a branch instruction. The caller must be in both key 0 and supervisor state. This option must be selected when in SRB mode. |
None.
When the service returns control to the resource manager, GPR 15 and the return_code parameter contain a hexadecimal return code.
Return Code in: Decimal (Hex) | Equate symbol | Meaning and Action |
---|---|---|
00 (00) | IEA_SUCCESS | Meaning: Successful completion. Action: None |
04 (04) | IEA_PE_TOKEN_BAD | Meaning: Program error. The
specified pause element token is not valid. The system rejects the
service call. Action: Check the calling program for a probable coding error. Correct the program and rerun it. |
08 (08) | IEA_PE_TOKEN_STALE | Meaning: The specified pause
element token is stale; that is, it was valid but has been used on
the Pause or Transfer service. This service requires the updated
PET returned on Pause or Transfer. Action: Check the calling program for a probable coding error. Correct the program and rerun it. |
12 (0C) | IEA_DUPLICATE_PAUSE | Meaning: The work unit has
already been paused using the specified pause element token. The
system rejects the service call. Action: Check the calling program for a probable coding error. Correct the program and rerun it. |
16 (10) | IEA_SLEEP_DISRUPTED | Meaning: RTM has terminated
the task or SRB; no release is necessary. Action: None |
20 (14) | IEA_SPACE_TERMINATING | Meaning: The address space
that contains the task or SRB is terminating; no release is necessary. Action: None |
24 (18) | IEA_LOCK_HELD | Meaning: Program
error. If a current_du_pause_element_token of 16 bytes of binary
zeros is specified, one or more locks other than the local lock are
held. Otherwise, one or more locks are held. The system rejects
the service call. Action: Check the calling program for a probable coding error. Correct the program and rerun it. |
32 (20) | IEA_PE_BAD_STATE | Meaning: Program error. The
pause element associated with the pause element token specified in
the call is not in a valid state. The system rejects the service call. Action: Check the calling program for a probable coding error, such as attempting to perform a Pause or Transfer using a pause element token that has already been used to Pause or Transfer by another unit of work. Correct the program and rerun it. |
36 (24) | IEA_UNSUPPORTED_MVS_RELEASE | Meaning: Environmental error.
The system release does not support this service. The system rejects
the service call. Action: Run the program on a system that supports the service. |
44 (2C) | IEA_INVALID_MODE | Meaning: Program error. The
calling program is not in primary ASC mode, which this service requires.
The system rejects the service call. Action: Check the calling program for a probable coding error. Correct the program and rerun it. |
52 (34) | IEA_ALREADY_SUSPENDED | Meaning: The pause element
was already paused. Action: Check the calling program for a probable coding error and correct the program and rerun it. |
60 (3C) | IEA_AUTH_TOKEN | Meaning: Program
error. The caller was in Problem state or key 8, but the pause element
token was allocated with pause_element_auth_level=IEA_AUTHORIZED.
The system rejects the service call. Action: Program error. The specified pause element token is not valid. The system rejects the service call. |
64 (40) | IEA_PE_NOT_HOME | Meaning: Program
error. The pause element token was for a pause element allocated with
pause_element_auth_level=IEA_UNAUTHORIZED to another address space. Action: Check the calling program for a probable coding error. Correct the program and rerun it. |
68 (44) | IEA_XFER_TO_SELF | Meaning: Program error. The
specified current_du_pause_element_token and target_du_pause_element_token
are the same. Action: Check the calling program for a probable coding error. Correct the program and rerun it. |
72 (48) | IEA_XFER_FAILED | Meaning: The transfer failed,
and the current_du_pause_element_token is no longer usable. Action: Reissue the transfer request using the updated_du_pause_element_token. Deallocate the current_du_pause_element_token. |
4095 (FFF) | IEA_UNEXPECTED_ERROR | Meaning: This service routine
encountered an unexpected error. The system rejects this service
request. Action: Search problem reporting databases for a fix for the problem. If no fix exists, contact the IBM® Support Center. |