IOSWITCH — IOS switch information service
Description
IOSWITCH provides a service which callers outside the IOS address space can use to obtain physical topology information about a specific switch and its ports.
Environment
The requirements for the caller are:
| Environmental factor | Requirement |
|---|---|
| Minimum authorization: | Problem or Supervisor state. Any PSW key. |
| Dispatchable unit mode: | Task |
| Cross memory mode: | Any PASN, any HASN, any SASN |
| AMODE: | 31-bit |
| ASC mode: | Primary |
| Interrupt status: | Enabled for I/O and external interrupts. |
| Locks: | No locks may be held. |
| Control parameters: | Must be in the primary address space. |
Programming requirements
None.
Restrictions
The invoker must not hold any locks which would prevent this service from obtaining the IOSYNCH lock. The service must not be invoked until after the IOS space-switching PC table has been established.
Input register information
Before issuing the IOSWITCH macro, the caller does not have to place any information into any register unless using it in register notation for a particular parameter, or using it as a base register.
Output register information
The contents of registers 14 through 1 are altered during processing.
- Register
- Contents
- 0
- Reason code if GPR15 is not 0
- 1
- Unpredictable (Used as a work register by the system)
- 2-13
- Unchanged
- 14
- Unpredictable (Used as a work register by the system)
- 15
- Return code
- Register
- Contents
- 0-1
- Unpredictable (Used as work registers by the system)
- 2-13
- Unchanged
- 14-15
- Unpredictable (Used as work registers by the system)
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.
Performance implications
None.
Syntax
The IOSWITCH macro is written as follows:
| Syntax | Description |
|---|---|
| name | name: Symbol. Begin name in column 1. |
| ␣ | One or more blanks must precede IOSWITCH. |
| IOSWITCH | |
| ␣ | One or more blanks must follow IOSWITCH. |
| SWITCH=switch | switch: Symbol up to 4 characters long. |
| ,SWITCHAREA=switcharea | switcharea: RS-type address or address in register (2) - (12). |
| ,SWITCHLEN=switchlen | switchlen: RS-type address or address in register (2) - (12). |
| ,SUBPOOL=subpool | subpool: RS-type address or address in register (2) - (12). |
| ,OFFLINE | |
| ,RETCODE=retcode | retcode: RS-type address or register (2) - (12). |
| ,RSNCODE=rsncode | rsncode: RS-type address or register (2) - (12). |
| ,PLISTVER=IMPLIED_VERSION | Default: PLISTVER=IMPLIED_VERSION |
| ,PLISTVER=MAX | |
| ,PLISTVER=1 | |
| ,MF=S | Default: MF=S |
| ,MF=(L,list addr) | list addr: RS-type address or register (1) - (12). |
| ,MF=(L,list addr,attr) | |
| ,MF=(L,list addr,0D) | |
| ,MF=(E,list addr) | |
| ,MF=(E,list addr,COMPLETE) | |
Parameters
The parameters are explained as follows:
- name
- An optional symbol, starting in column 1, that is the name on the IOSWITCH macro invocation. The name must conform to the rules for an ordinary assembler language symbol.
- SWITCH=switch
- A required 4-character input parameter containing the switch device number.
- SWITCHAREA=switcharea
- A required 4-byte output parameter that will receive the address of the switch data area. The storage for this data must be released by the caller. This data is mapped by IOSDSWTD.
- SWITCHLEN=switchlen
- A required fullword output parameter that will receive the length, in bytes, of the switch data area.
- SUBPOOL=subpool
- The name (RS-type), or address in register (2) - (12), of a required
halfword input parameter that identifies the subpool to be used for obtaining storage for the switch
data area.
See the list of subpool characteristics in z/OS MVS Programming: Authorized Assembler Services Guide for information about authorization requirements for specific subpools.
When the calling program is unauthorized, storage is obtained in the specified subpool, provided that the caller is permitted to use that subpool. Storage will be obtained in the caller’s key; however, the resulting key will be set according to the rules for the specified subpool, as documented in z/OS MVS Programming: Assembler Services Guide. Valid subpools are: 0 - 127, 131, and 132.
When the calling program is authorized, storage is obtained in key 0. Valid subpools are: 226, 227, 228, 231, 239, 241, 245, 247, and 248.
- OFFLINE
- An optional keyword that indicates that data will be returned for the switch device even if the device is offline. Note that if the device is in fact offline, the data may be outdated.
- ,RETCODE=retcode
- An optional output parameter into which the return code is to
be copied from GPR 15.
To code: Specify the RS-type address of a fullword field, or register (2)-(12).
- ,RSNCODE=rsncode
- An optional output parameter into which the reason code is to
be copied from GPR 0.
To code: Specify the RS-type address of a fullword field, or register (2)-(12).
- ,PLISTVER=IMPLIED_VERSION
- ,PLISTVER=MAX
- ,PLISTVER=1
- An optional input parameter that specifies the version of the
macro. PLISTVER determines which parameter list the system generates.
PLISTVER is an optional input parameter on all forms of the macro,
including the list form. When using PLISTVER, specify it on all macro
forms used for a request and with the same value on all of the macro
forms. The values are:
- IMPLIED_VERSION, which is the lowest version that allows all parameters specified on the request to be processed. If you omit the PLISTVER parameter, IMPLIED_VERSION is the default.
- MAX, if you want the parameter list to be the largest size
currently possible. This size might grow from release to release and
affect the amount of storage that your program needs.
If you can tolerate the size change, IBM® recommends that you always specify PLISTVER=MAX on the list form of the macro. Specifying MAX ensures that the list-form parameter list is always long enough to hold all the parameters you might specify on the execute form, when both are assembled with the same level of the system. In this way, MAX ensures that the parameter list does not overwrite nearby storage.
- 1, if you use the currently available parameters.
To code: Specify one of the following:- IMPLIED_VERSION
- MAX
- A decimal value of 1
- ,MF=S
- ,MF=(L,list addr)
- ,MF=(L,list addr,attr)
- ,MF=(L,list addr,0D)
- ,MF=(E,list addr)
- ,MF=(E,list addr,COMPLETE)
- An optional input parameter that specifies the macro form.
Use MF=S to specify the standard form of the macro, which builds an inline parameter list and generates the macro invocation to transfer control to the service. MF=S is the default.
Use MF=L to specify the list form of the macro. Use the list form together with the execute form of the macro for applications that require reentrant code. The list form defines an area of storage that the execute form uses to store the parameters. Only the PLISTVER parameter may be coded with the list form of the macro.
Use MF=E to specify the execute form of the macro. Use the execute form together with the list form of the macro for applications that require reentrant code. The execute form of the macro stores the parameters into the storage area defined by the list form, and generates the macro invocation to transfer control to the service.
- ,list addr
- The name of a storage area to contain the parameters. For MF=S and MF=E, this can be an RS-type address or an address in register (1)-(12).
- ,attr
- An optional 1- to 60-character input string that you use to force boundary alignment of the parameter list. Use a value of 0F to force the parameter list to a word boundary, or 0D to force the parameter list to a doubleword boundary. If you do not code attr, the system provides a value of 0D.
- ,COMPLETE
- Specifies that the system is to check for required parameters and supply defaults for omitted optional parameters.
ABEND codes
None.
Return and reason codes
- GPR 15 (and retcode, when you code RETCODE) contains a return code.
- When the value in GPR 15 is not zero, GPR 0 (and rsncode, when you code RSNCODE) contains a reason code.
The following table identifies the hexadecimal return and reason codes:
| Hexadecimal return code | Reason codes, meaning and action |
|---|---|
| 00 | IOSWITCH completed successfully. |
| 04 | Warning.
|
| 08 | Program error.
|
| 20 | System error. An unexpected error occurred. |