It describes the programs provided specifically to support Examiner.
EXAMINER/LIBRARY
The EXAMINER/LIBRARY program provides a common interface for your Examiner software to collect and store timing data on disk. It provides variables and procedures that can be visible to other programs involved in the data collection process, and aids in the control of the data collection process.
Because the library runs in real time with the computer system that is being measured, it has been designed to have a minimum impact on the measurements being taken.
The object code for the library is installed as a system library called EXAMINERLIB during installation. It enters the mix when the first call to it is made. When the last use of the library has finished, it leaves the mix.
While data collection is disabled, any transactions calling the library to store timing records are ignored, and control is returned to the caller immediately.
Once data collection is enabled by an :EXM+ command, or by an external program utilizing the Auto_Enable entry point, the timing records are stored in blocks. Once a block is full, WRITER stores it on disk (three blocks of 100 timing records per block).
If there are no available blocks, all new timing points are lost until a block becomes available. Every 100 messages lost triggers an error message.
Each timing record is stored as is, except for the unique identifier property. If this property contains zero or blanks, a unique number is created, stored in the timing record, and passed back to the application for future use.
An entry point is provided to enable performance statistics to be collected on behalf of the transaction. This entry point is called by the timing point code to ensure that particular information is available. Other entry points control the setting of variables that oversee the status of data collection.
EXAMINER/WRITER
The EXAMINER/WRITER program is processed whenever the start data collection option is selected by EXAMINER/LIBRARY using the Auto_Enable entry point. This can be called by using the :EXM+ command, or any user-created schedulers.
EXAMINER/WRITER asynchronously writes, using direct I/O, a block of 100 timing points to a file. By default, the title of this file is as follows:
(usercode)EXAMINER/TIMING/serial/mmddyy/hhmm/sequence ON pack
You can specify the required pack value by using the :REL EXM [+ pack] command, otherwise the pack the library is installed on is used. The usercode value is that of the LSS program issuing the :EXM + command. The value serial is the system serial number, and sequence is a sequence number.
Any error conditions that arise are handled and appropriate error messages are displayed. This enables EXAMINER/LIBRARY to continue to collect data while the disk I/ O operation is in progress.
EXAMINER/WRITER is run at priority 95 and leaves the mix whenever the end data collection option is selected by EXAMINER/LIBRARY through the Auto_enable entry point. You can invoke this by using the :REL EXM command.
Before the file is closed, a check is done to see if a partially filled buffer needs to be written to disk. If so, a record filled with the pattern 999999 is created, to indicate the logical end-of-file.