Call IEA4XFR service to release a paused task, and, when possible, give the task immediate control. This service can also, optionally, pause the task under which the transfer request is made. If the caller does not request that its task be paused, the caller's task remains dispatchable.
The requirements for the caller are:
Environmental factor | Requirement |
---|---|
Minimum authorization: | Problem state and any PSW key. |
Dispatchable unit mode: |
|
Cross memory mode: |
|
AMODE: | 64-bit |
ASC mode: | Primary mode. |
Interrupt status: | Enabled for I/O and external interrupts. |
Locks: | When supervisor state and PSW key 0 and a current_du_pause_element_token of 16 bytes of binary zeros are specified, the local lock may be held. Otherwise, no locks may be held. |
Control parameters: | Must be in the primary address space and addressable by the caller. |
Either link the object code of the calling program 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 |
When the calling program specifies auth_level=IEA_UNAUTHORIZED, the caller must be in task mode and can only transfer to another task in its home address space. All pause element tokens (PETs) used when auth_level=IEA_UNAUTHORIZED must have been obtained using an authorization level of IEA_UNAUTHORIZED.
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 IEA4XFR | |
The parameters are explained as follows:
Contains the return code from the transfer service.
Indicates the maximum authorization level of the pause element being deallocated. The calling program can use constants IEA_UNAUTHORIZED and IEA_AUTHORIZED, defined by IEAASM and IEAC. The following levels are supported:
Variable | Value (HEX) | Meaning |
---|---|---|
IEA_UNAUTHORIZED | 0 | The pause elements must have been allocated with auth_level=_UNAUTHORIZED. |
IEA_AUTHORIZED | 1 | The pause elements must have been allocated with auth_level=_AUTHORIZED. |
Contains a pause element token that identifies the pause element used to pause the current task. 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 updated_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 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 service.
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 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 the pause element to release the target task. Any PET that specifies a pause element not currently being used to pause a task is valid. When a PET for a previously released pause element is used to try to pause a task, the task is not paused; however, the value specified in target_du_release_code will still be returned to the caller of pause or transfer service.
If the task was paused and is now dispatchable, the task will immediately be given control on the current processor.
Contains the release code returned to the caller of the pause or transfer service that used (or will use) the same PET to pause a task.
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. The caller is
holding one or more locks; no locks must be 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. |
40 (28) | IEA_INVALID_AUTHCODE | Meaning: Program error. The auth_level
value specified in the call 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. |
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 specified
auth_level=UNAUTHORIZED, but the pause element token was allocated
with auth_level=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 caller specified
auth_level=UNAUTHORIZED, but the pause element token was for a pause
element allocated to another address. 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 useable. 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. |