The ITTWRITE macro enables the component trace external writer to write a full trace buffer out to a trace data set on DASD or tape.
The ITTWRITE macro asynchronously captures a full trace buffer while the application continues processing and writing trace entries to another trace buffer.
The requirements for the caller are:
Environmental factor | Requirement |
---|---|
Minimum authorization: | Supervisor state or PSW key 0-7 |
Dispatchable unit mode: | Task or SRB mode |
Cross memory mode: | PASN=HASN=SASN or PASN¬=HASN¬=SASN |
AMODE: | 64-bit. |
ASC mode: | Primary or access register. |
Interrupt status: | Enabled or disabled for I/O and external interrupts. |
Locks: | No locks may be held. |
Control Parameters: | Must be in the 64-bit primary address space. |
None.
If either the BUFFALET or the TBWCALET identifies the secondary or home address space, then both must identify the same address space (that is, both the trace buffer and the trace buffer writer control area must be in the same address space).
All registers are viewed as 64-bit values. After the caller issues the macro, the system might use some registers as work registers or might change the contents of some registers. When the system returns control to the caller, the contents of these registers are not the same as they were before the caller issued the macro. 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.
None.
The standard form of the ITTWRITE macro is written as follows:
Syntax | Description |
---|---|
name | name: Symbol. Begin name in column 1. |
␢ | One or more blanks must precede ITTWRITE. |
ITTWRITE | |
␢ | One or more blanks must follow ITTWRITE. |
BUFFADDR=buffer_address | buffer_address: RS-type address or register (2)-(12). |
,BUFFALET=buffer_alet | buffer_alet: RS-type address or register (2)-(12). |
,BUFFALET=NOBUFFALET | Default: BUFFALET=NOBUFFALET |
,BUFFLEN=buffer_length | buffer_length: RS-type address or register (2)-(12). |
,TOKEN=token | token: RS-type address or register (2)-(12). |
,TBWCADDR=tbwc_address | tbwc_address: RS-type address or register (2)-(12). |
,TBWCADDR64=tbwc_address64 | tbwc_address64: RS-type address or register (2)-(12). |
,TBWCALET=tbwc_alet | tbwc_alet: RS-type address or register (2)-(12). |
,TBWCALET=NOTBWCALET | Default: TBWCALET=NOTBWCALET |
,SYNCH=YES | NO | Default: SYNCH=NO |
,RC=return_code | return_code: RS-type address or register (2)-(12). |
,RSNCODE=reason_code | reason_code: RS-type address or register (2)-(12). |
,COM=comment | comment: A comment string. |
,COM=NULL | Default: COM=NULL. |
,MF=(S) | Default: MF=(S) |
The parameters are explained as follows:
The following table identifies abend code and reason code combinations, and a description of what each means:
Abend Code | Reason Code | Description |
---|---|---|
00D | 00010100 | For the ITTWRITE macro, the parameter list version number is not correct. |
00D | 00010200 | The system found either nonzero values in the reserved fields or unused fields for the requested service in the ITTWRITE macro parameter list. |
00D | 00010300 | The buffer length passed was 0 or less. |
00D | 00010400 | The buffer length is unusually large and is not supported by CTRACE. |
When control returns from ITTWRITE, GPR 15 (and return_code, if you coded RC) contains one of the following return codes. The third byte of GPR 0 (and reason_code, if you coded RSNCODE) might contain one of the following reason codes.
Hexadecimal Return Code | Hexadecimal Reason Code | Meaning |
---|---|---|
00 | None. | ITTWRITE was successful. |
04 | None. | ITTWRITE was unsuccessful. No data was captured because the trace is not connected to an active external writer. |
08 | xxxx01xx | Storage required to perform the write operation could not be obtained. |
08 | xxxx02xx | ITTWRITE was unable to schedule an SRB to process this request. |
08 | xxxx03xx | The control information (TBWC) has already been reused by the application. |
0C | xxxx01xx | The caller is holding locks. |
0C | xxxx02xx | The input token was not valid. |
0C | xxxx0300 | The TBWC is not valid because the sequence number is the same as a previous write request. |
0C | xxxx0301 | The TBWC is not valid for one of the following
reasons:
|
ITTWRITE BUFFADDR=TRACEADR,BUFFLEN=TRACESIZ, X
TOKEN=TCWTRTKN,TBWCADDR=TBWCADR, X
RC=TCRCODE,RSNCODE=TCRSNCODE
TBWCADR DS A TBWC address
TRACEADR DS A Trace buffer address
TRACESIZ DS F Trace buffer size
TCWTRTKN DS CL8 Trace writer token produced by
* CTRACE upon connection
TCRCODE DS F Return code from CTRACE
TCRSNCODE DS F Reason code from CTRACE