Browse Prior Art Database

Variable Length, Multi-User, Continuous Input/Output Processor Trace

IP.com Disclosure Number: IPCOM000101989D
Original Publication Date: 1990-Oct-01
Included in the Prior Art Database: 2005-Mar-17
Document File: 4 page(s) / 134K

Publishing Venue

IBM

Related People

Fisher, ME: AUTHOR

Abstract

A methodology is described for tracing user-selected events internally within an input/output processor. The events thus chosen record the sequence of execution through routines of the code. The tracing methodology includes all of the following: compact trace entries, tracing of variable amounts of data (addresses, status bytes, etc..), trace entries which contain within them the length of the data being traced, a macro interface, continuous tracing, and the ability to support multiple users.

This text was extracted from an ASCII text file.
This is the abbreviated version, containing approximately 51% of the total text.

Variable Length, Multi-User, Continuous Input/Output Processor Trace

       A methodology is described for tracing user-selected
events internally within an input/output processor.  The events thus
chosen record the sequence of execution through routines of the code.
The tracing methodology includes all of the following:  compact trace
entries, tracing of variable amounts of data (addresses, status
bytes, etc..), trace entries which contain within them the length of
the data being traced, a macro interface, continuous tracing, and the
ability to support multiple users.

      The user of the variable-length internal trace decides which
events or subroutines are to be traced, then invokes a macro which
passes the length of data to be traced as well as a unique trace
point identifier to an internal trace subroutine.  The internal trace
subroutine writes the contents of the selected data areas to an
internal trace control block for later analysis.  Multiple users can
trace to a single trace block.  The internal trace runs continuously,
so that the trace data is available in any dump of memory.  The
internal trace is further described as follows:
 1.  Compact trace entry.  The format of the trace entry placed in
the trace table is illustrated in Fig. 1.

      Illustrated in Fig. 1 is a sample trace entry.  The first 4
bits, labeled CALLER, is 'F'X; it identifies which user is making the
trace entry.  The second 4 bits, labeled LENGTH, is '1'X; it
identifies the length of the data (in 2-byte increments) which
follows the trace entry; in this example two bytes of data (one
2-byte word) is being traced. The second byte, labeled TRACE ID, is
'01'X, and is the unique trace point identifier.  (Up to 256 unique
trace identifiers can be made for any one user.)  The last 2 bytes of
the trace entry, labeled DATA, is the contents of some 2-byte field,
'02CE'X, which the user wanted to examine.
 2.  Macro Interface.  A macro interface provides easy addition of
new trace entries.  Errors in trace definition are found at compile
time, not at execution time.

      The macro generates code to do the following:
     -  At compile time, the macro creates the 2-byte trace entry.
It sets the total data length in the second 4 bits of the trace entry
from the sum of all the data lengths coded. The 4-bit length
specifies the number of 2-byte words and allows up to 15 2-byte words
or 30 bytes of data on one trace entry.
 -  The macro generates code to place the data, if any, into
contiguous areas in the parameter list after the trace entry.
 -  It then generates a subroutine call to the internal trace
subroutine, passing only the 2-byte trace entry and the address of
the trace parameter list.  (This avoids passing the addresses of each
data area to be traced.)
      The format of the trace macro is as shown in Fig. 2.

      In Fig. 2, the user codes USER_ID, depending on which component
he/she is tracing.  This s...