Description
- Non-reusable system LX
- The system does not reassign the LX. The original requestor of the LX should reconnect to the LX if the address space terminates and then restarts.
- Reusable system LX
- The system reassigns the LX after the owning address space has terminated or after the owner has used LXFRE to free the LX.
- Non-reusable non-system LX
- The system reassigns the LX after all entry tables are disconnected from the LX. This is the case when the owning address space terminates or when the owner uses ETDIS to disconnect the entry table from the LX and uses LXFRE to free the LX; and all address spaces that have used ETCON to connect the LX to that entry table have either terminated or used ETDIS to disconnect the entry table from the LX.
- Reusable non-system LX
- The system reassigns the LX after the owning address space has terminated or after the owner has used LXFRE to free the LX.
Related macro
LXFRE
Environment
These are the requirements for the caller:
Environmental factor | Requirement |
---|---|
Minimum authorization: | Supervisor state or PKM 0-7 |
Dispatchable unit mode: | Task or SRB |
Cross memory mode: | Any PASN, any HASN, any SASN |
AMODE: | 24- or 31-bit |
ASC mode: | Primary |
Interrupt status: | Enabled for I/O and external interrupts |
Locks: | No locks held |
Control parameters: | Must be in primary address space |
Programming requirements
Register 13 must point to a standard register savearea that must be addressable in primary mode.
Restrictions
None.
Input register information
- If the caller has issued the SYSSTATE macro with the OSREL=ZOSV1R6 parameter (Version 1 Release 6 of z/OS® or later) before issuing the LXRES macro, the caller does not have to place any information into any general purpose register (GPR) unless using it in register notation for a particular parameter, or using it as a base register.
- Otherwise, the caller must ensure that the following general purpose
register contains the specified information:
- Register
- Contents
- 13
- The address of an 18-word save area
Output register information
After the caller issues the macro, the macro might use some registers as work registers or might change the contents of some registers. When the macro returns control to the caller, the contents of these registers are not the same as they were before the macro was issued. Therefore, if the caller depends on these registers containing the same value before and after issuing the macro, the caller must save these registers before issuing the macro and restore them after the system returns control.
- Register
- Contents
- 0-1
- Used as work registers by the macro
- 2-13
- Unchanged
- 14
- Used as a work register by the macro
- 15
- Return code
Performance implications
None.
Syntax
The standard form of the LXRES macro is written as follows:
Syntax | Description |
---|---|
name | name: Symbol. Begin name in column 1. |
␢ | One or more blanks must precede LXRES. |
LXRES | |
␢ | One or more blanks must follow LXRES. |
LXLIST=lx list addr | lx list addr: RX-type address or register (2) - (12). |
ELXLIST=elx list addr | elx list addr: RX-type address or register (2) - (12). |
,LXSIZE=12 | Default: LXSIZE=12 when you do not specify EXLIST or REUSABLE=YES; LXSIZE=16 when you specify ELXLIST or REUSABLE=YES. |
,LXSIZE=16 | |
,LXSIZE=23 | |
,LXSIZE=24 | |
,REUSABLE=NO | Default: REUSABLE=NO |
,REUSABLE=YES | |
,SYSTEM=NO | Default: SYSTEM=NO |
,SYSTEM=YES | |
,RELATED=value | value: Any valid macro keyword specification. |
Parameters
The parameters are explained as follows:
- LXLIST=list addr
- ELXLIST=list addr
- lx list addr specifies the address of
a variable-length list of fullword entries. The first fullword in
the list must contain the number (1 to 32) of linkage index (LX) values
to be returned. The list must be long enough to contain the requested
number of values. The LX values are returned in the list entries in
the proper position for ORing with the entry index to form a PC number.
elx list addr specifies the address of an area that contains extended linkage index (LX) values. The first fullword in the list must contain the number (1 to 32) of extended linkage index (LX) values to be returned. Each extended LX value is an eight-byte area that contains a 4-byte sequence number followed by a 4-byte LX value. The area must be long enough to contain the requested number of values. The LX value within the extended LX value is in the proper position for ORing with the entry index to form a PC number. The sequence number in each extended LX value is relevant only when you have specified REUSABLE=YES. You can specify ELXLIST even if the LX Reuse Facility is not enabled.
- LXSIZE=12
- LXSIZE=16
- LXSIZE=23
- LXSIZE=24
- LXSIZE allows you to specify the maximum size of the LX, which
is either 12, 16, 23, or 24 bits. The system is allowed to return
any LX that is no larger than the size that you specify. On a system
that supports only 2048 LXs (running on a processor prior to a z890
or z990 at driver level 55 and running at level z/OS V1R6 or with the LX reuse facility, the
returned LX will fit within 12 bits. The LX reuse facility is available
with z/OS V1R6 to provide additional
LXs and improve reusability of LXs. It is enabled when running on
a z890 or z990 processor at driver level 55 or above, with APAR OA07708
installed. When the facility is enabled bit CVTALR in byte CVTFLAG2
of the CVT data area is 1.
LXSIZE=12 is the default when you do not specify REUSABLE=YES and you do not specify ELXLIST. If you specify LXSIZE=12 along with EXLIST or REUSABLE=YES, the system ignores LXSIZE=12 and uses LXSIZE=16 instead. You can use the LXLIST parameter for the returned data regardless of the LXSIZE value, unless you also specify REUSABLE=YES.
LXSIZE=16 is the default when you have specified either the ELXLIST or REUSABLE parameter.
Because the LX forms part of the PC number (bits 0–23), and because the PC instruction generates the PC number as an 'effective address', the value you specify for LXSIZE depends on the addressing mode of the calling programs that will execute the PC:- Specify LXSIZE=16 if any callers might execute the PC instruction in AMODE 24.
- Specify LXSIZE=23 if callers will execute the PC instruction only in AMODE 31 or 64. Do not specify LXSIZE=23 if the PC can ever be executed in AMODE 24.
- Specify LXSIZE=24 if callers will execute the PC instruction only in AMODE 64.
- REUSABLE=NO
- REUSABLE=YES
- By specifying the REUSABLE keyword, you can decide that whether
or not the LX being returned is reusable. When you specify REUSABLE=YES,
you must also:
- Specify the ELXLIST parameter.
- Make sure that the PC issued using the reusable LX is done by placing the sequence number for that LX in bits 0-31 of 64-bit GPR 15 prior to issuing the PC.
If the LX Reuse Facility is not enabled, a non-reusable LX will be returned.
- ,SYSTEM=NO
- ,SYSTEM=YES
- Specifies whether (YES) or not (NO) the linkage indexes are being reserved for system connections. If YES is specified, a subsequent ETCON macro specifying the linkage index causes all address spaces to be connected to the entry table.
- ,RELATED=value
- Specifies information used to self-document macros by “relating” functions or services to corresponding services performed elsewhere. The format and contents of the information specified can be any valid coding values.
ABEND codes
053
See z/OS MVS System Codes for an explanation and programmer responses for this code.
Return codes
When the LXRES macro returns control to your program, GPR 15 contains a hexadecimal return code.
Return Code | Meaning |
---|---|
00 | Meaning: The specified linkage indexes were successfully reserved. |
Examples
For examples of the use of this and other cross memory macros, refer to the chapter on cross memory communication in z/OS MVS Programming: Extended Addressability Guide.