REQUEST=DETACH allows you to free one or more memory objects.
The requirements for the caller are:
Environmental factor | Requirement |
---|---|
Minimum authorization: | Problem state and PSW key 8-15. |
Dispatchable unit mode: | Task or SRB |
Cross memory mode: | Any PASN, any HASN, any SASN Note: that problem
state caller running in PSW key 8-15 can use GETSTOR/DETACH only when
primary = home.
|
AMODE: | 31- or 64-bit |
ASC mode: | Primary or access register (AR) |
Interrupt status: | Enabled for I/O and external interrupts |
Locks: | No locks may be held. |
Control parameters: | Control parameters must be in the primary address space. |
None.
No data space ALETs can be specified.
Before issuing the IARV64 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 REQUEST=DETACH option of the IARV64 macro is written as follows:
Syntax | Description |
---|---|
name | name: symbol. Begin name in column 1. |
␢ | One or more blanks must precede IARV64. |
IARV64 | |
␢ | One or more blanks must follow IARV64. |
REQUEST=DETACH | |
,MATCH=SINGLE | Default: MATCH=SINGLE |
,MATCH=USERTOKEN | |
,MEMOBJSTART=memobjstart | memobjstart: RS-type address or address in register (2) - (12). |
,USERTKN=usertkn | usertkn: RS-type address or address in register (2) - (12). |
,USERTKN=NO_USERTKN | Default: USERTKN=NO_USERTKN |
,USERTKN=usertkn | usertkn: RS-type address or address in register (2) - (12). |
,OWNER=YES | Default: OWNER=YES |
,TTOKEN=ttoken | ttoken: RS-type address or address in register (2) - (12). |
,TTOKEN=NO_TTOKEN | Default: TTOKEN=NO_TTOKEN |
,COND=NO | Default: COND=NO |
,COND=YES | |
,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=0, 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) |
|
The parameters are explained as follows:
A memory object can be affected by DETACH when MATCH=SINGLE USERTKN=NO_USERTKN is specified, even when the memory object has an associated user token. Other invocations of DETACH will affect memory objects only when a matching user token is passed.
All I/O into each memory object specified must be complete before the DETACH is requested. If the DETACH service finds a PAGEFIXed page in the memory object, the memory object will be not be freed, but any prior pages will have indeterminate data and the caller will be abnormally ended.
If the system encounters an error in processing a qualifying memory object (e.g. unexpected pagefixed page), the processing ends. The system does not process that page or any further pages or memory objects and abends the caller.
To code: Specify the RS-type address, or address in register (2)-(12), of an eight-byte pointer field.
When the memory object is not associated with the input token value, it will not be processed. The default is NO_USERTKN.
To code: Specify the RS-type address, or address in register (2)-(12), of a doubleword field.
To code: Specify the RS-type address, or address in register (2)-(12), of a doubleword field.
If TTOKEN is not specified, the task issuing the DETACH request must be the owner of the memory object.
When the TTOKEN parameter is used by problem state programs with PSW key 8-15, the target task must represent the calling task OR the jobstep task for the calling task OR the mother task. The mother task may not be given however when the calling task is itself a jobstep task.
If the TTOKEN parameter is not specified, and the caller is a TCB, the currently dispatched task must be the owner of the memory object. When OWNER YES is specified by an SRB, the caller will be abnormally ended if the TTOKEN value is not supplied. The default is NO_TTOKEN.
To code: Specify the RS-type address, or address in register (2)-(12), of a 16-character field.
To code: Specify the RS-type address of a fullword field, or register (2)-(12).
To code: Specify the RS-type address of a fullword field, or register (2)-(12).
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.
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.