The requirements for the caller who requests CREAD and CWRITE are:
Environmental factor | Requirement |
---|---|
Minimum authorization: | Supervisor state or PSW key 0 - 7 |
Dispatchable unit mode: | Task or SRB |
Cross memory mode: | Any PASN, any HASN, any SASN |
AMODE: | 31-bit |
ASC mode: | Primary or access register (AR) |
Interrupt status: | Enabled or disabled for I/O and external interrupts |
Locks: | The caller may hold locks, but is not required to hold any |
Control parameters: | The parameter list and range list must be in nonpageable, non-DREF storage. If the caller specifies HSPALET and is disabled, the save area must also be in nonpageable, non-DREF storage. The parameter list and save area must all be in the common area or in the private area of the caller's primary address space. |
If you code HSPALET, and you have an FRR recovery routine that gains control while HSPSERV is executing, your recovery routine cannot attempt retry at the time of error.
Before issuing the HSPSERV 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.
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.
The standard form of the HSPSERV macro for ESO hiperspaces follows.
Syntax | Description |
---|---|
name | name: Symbol. Begin name in column 1. |
␢ | One or more blanks must precede HSPSERV. |
HSPSERV | |
␢ | One or more blanks must follow HSPSERV. |
CREAD | |
CWRITE | |
,STOKEN=stoken-addr | stoken-addr: RX-type address or register (2) - (12). |
,HSPALET=alet-addr | alet-addr: RX-type address or register (2) - (12). |
,NUMRANGE=n | n: A number from 1 to 50. |
,NUMRANGE=num-addr | num-addr: RX-type address or register (2) - (12). Default: NUMRANGE=1. |
,RANGLIST=list-addr | list-addr: RX-type address or register (2) - (12). |
,ADDRSP=HOME | Default: ADDRSP=HOME. |
,ADDRSP=PRIMARY | |
,ADDRSP=COMMON | |
,KEEP=YES | Default: KEEP=YES. |
,KEEP=NO | |
,RETCODE=ret-addr | ret-addr: RX-type address or register (2) - (12). |
,RSNCODE=rsn-addr | rsn-addr: RX-type address or register (2) - (12). |
,MF=S | |
The parameters are explained as follows:
If all blocks requested to be read are available in the hiperspace, then the system performs the read operation. However, if one or more of the blocks to be read are no longer available in the hiperspace, then the system returns a failing return code. (See return code 08.) In this case, the system does not tell you which blocks it successfully reads, if any.
STOKEN and RANGLIST are required parameters on the CREAD request. ADDRSP, NUMRANGE, RSNCODE, and RETCODE are optional parameters.
STOKEN and RANGLIST are required parameters on the CWRITE request. ADDRSP, NUMRANGE, KEEP, RSNCODE, and RETCODE are optional parameters.
Use of the HSPALET parameter requires that the caller provide a 144-byte save area in the caller's primary address space or in the common area. If the caller is disabled, the save area must be in nonpageable storage. AR/GPR 13 must provide addressability to this area regardless of the caller's ASC mode. GPR 13 must contain the address of the area and AR 13 must contain 0.
If you code HSPALET, do not code RELEASE=YES.
If you code HSPALET and you have an FRR recovery routine that gains control while HSPSERV is executing, your recovery routine cannot attempt retry at the time of error.
If you omit NUMRANGE, then HSPSERV reads or writes one virtual range.
The one or more address space ranges on RANGLIST must be consistent with the ADDRSP parameter. When you specify ADDRSP=COMMON, each address space range described in the range list must reside entirely within CSA and have no intersections with other common area subpools or the private area. When you specify ADDRSP=HOME or ADDRSP=PRIMARY, each address space range described in the range list must reside entirely within the private area.
Restrictions on the areas in the address space and the hiperspace are described in Figure 1.
The range list must be in the common area or in the private area of the caller's primary address space.
If you specify KEEP=YES, the data in the specified address space is unchanged and available for reference. The default is KEEP=YES.
If you specify KEEP=NO, the system might not preserve the data in the address space. If your program will reuse the same virtual storage area after the CWRITE request completes, use KEEP=NO.
HSPSERV might abnormally terminate with abend code X'01D'. See z/OS MVS System Codes for an explanation of abend code X'01D'.
When control returns from HSPSERV CREAD or HSPSERV CWRITE, GPR 15 (and ret-addr, if you coded RETCODE) contains one of the following hexadecimal return codes. GPR 0 (and rsn-addr, if you coded RSNCODE) contains one of the following hexadecimal reason codes.
Hexadecimal Return Code | Hexadecimal Reason Code | Meaning and Action |
---|---|---|
00 | 00 | Meaning: HSPSERV completed successfully. Action: None. |
08 | xxyy01xx | Meaning: Program error. The hiperspace
data you requested is not available (CREAD request). Action: The data must be retrieved from its permanent copy. |
08 | xxyy02xx | Meaning: Program error. The system rejects
the request because an address space page is not currently backed
by real storage. You can repeat the HSPSERV request after you reference
one or more pages, which causes the system to page the storage in
CWRITE request. Action: Reference the page or pages that are not in processor storage. |
08 | xxyy03xx | Meaning: Environmental error. The system
rejects the request because the necessary real storage frames are
not currently available. Action: Rerun your program one or more times during a period of lower system usage. If the problem persists, consult your system programmer, who might be able to tune the system so that more resources are available to your program. |
08 | xxyy04xx | Meaning: Environmental error. The system
rejects the request because no frames are currently available. Action: Rerun your program one or more times during a period of lower system usage. If the problem persists, consult your system programmer, who might be able to tune the system so that more resources are available to your program. |
08 | xxyy05xx | Meaning: System error. The system rejects
the request because a hiperspace page is unavailable. Action: Record the return and reason code and supply it to the appropriate IBM® support personnel. |
08 | xxyy06xx | Meaning: System error. The system rejects
the request because an address space page is unavailable. Action: Record the return and reason code and supply it to the appropriate IBM support personnel. |