200 lines
6.8 KiB
C
200 lines
6.8 KiB
C
|
/*
|
|||
|
* Module Name: WSDATA.H
|
|||
|
*
|
|||
|
* Description:
|
|||
|
*
|
|||
|
* Working set tuner include file. Contains common structure
|
|||
|
* declarations and constant definitions.
|
|||
|
*
|
|||
|
*
|
|||
|
* This is an OS/2 2.x specific file
|
|||
|
*
|
|||
|
* IBM/Microsoft Confidential
|
|||
|
*
|
|||
|
* Copyright (c) IBM Corporation 1987, 1989
|
|||
|
* Copyright (c) Microsoft Corporation 1987, 1989
|
|||
|
*
|
|||
|
* All Rights Reserved
|
|||
|
*
|
|||
|
* Modification History:
|
|||
|
*
|
|||
|
* 03/23/90 - created
|
|||
|
*
|
|||
|
*/
|
|||
|
|
|||
|
/*
|
|||
|
* Constant definitions.
|
|||
|
*/
|
|||
|
|
|||
|
#define NUM_VAR_BITS (sizeof(ULONG) << 3)
|
|||
|
|
|||
|
#ifdef TMIFILEHACK
|
|||
|
#define MAXLINE 80
|
|||
|
#endif /* TMIFILEHACK */
|
|||
|
|
|||
|
/*
|
|||
|
* Type definitions and structure declarations.
|
|||
|
*/
|
|||
|
|
|||
|
typedef ULONG fxnbits_t;
|
|||
|
|
|||
|
struct dtqo_s {
|
|||
|
unsigned long dtqo_hMTE; /* MTE handle */
|
|||
|
unsigned short dtqo_usID; /* Identifier */
|
|||
|
// unsigned short dtqo_SymCnt; /* Reserved */
|
|||
|
unsigned long dtqo_SymCnt; /* Reserved */ // mdg 4/98
|
|||
|
unsigned long dtqo_cbPathname; /* Module pathname length */
|
|||
|
unsigned long dtqo_clSegSize; /* Number of dyntrc variables */
|
|||
|
};
|
|||
|
|
|||
|
typedef struct dtqo_s dtqo_t;
|
|||
|
|
|||
|
|
|||
|
/*
|
|||
|
* WSI file layout:
|
|||
|
*
|
|||
|
* _________________________________________
|
|||
|
* | |
|
|||
|
* | wsihdr_s |
|
|||
|
* |_______________________________________|
|
|||
|
* |_______________________________________|
|
|||
|
* | sentinel 0 (dtgp_s) | <----------
|
|||
|
* |=======================================| |
|
|||
|
* | snapshot 0 (dtgp_s) for module X | | S
|
|||
|
* |---------------------------------------| | n
|
|||
|
* | dynamic trace variables for X | | a
|
|||
|
* |---------------------------------------| | p
|
|||
|
* | snapshot 0 (dtgp_s) for module Y | | s
|
|||
|
* |---------------------------------------| | h
|
|||
|
* | dynamic trace variables for Y | | o
|
|||
|
* |---------------------------------------| | t
|
|||
|
* | etc. | |
|
|||
|
* |=======================================| | D
|
|||
|
* | sentinel 1 (dtgp_s) | | a
|
|||
|
* |=======================================| | t
|
|||
|
* | snapshot 1 (dtgp_s) for module X | | a
|
|||
|
* |---------------------------------------| |
|
|||
|
* | dynamic trace variables for X | |
|
|||
|
* |---------------------------------------| |
|
|||
|
* | snapshot 1 (dtgp_s) for module Y | |
|
|||
|
* |---------------------------------------| |
|
|||
|
* | dynamic trace variables for Y | |
|
|||
|
* |---------------------------------------| |
|
|||
|
* | etc. | |
|
|||
|
* |=======================================| |
|
|||
|
* | sentinel 2 (dtgp_s) | |
|
|||
|
* |=======================================| |
|
|||
|
* | etc. | |
|
|||
|
* |=======================================| |
|
|||
|
* | end sentinel (dtgp_s) | |
|
|||
|
* |_______________________________________| <----------
|
|||
|
* |_______________________________________|
|
|||
|
* | | <---------- Q
|
|||
|
* | dtqo_s for module X | | u
|
|||
|
* |---------------------------------------| | e
|
|||
|
* | module X pathname string | | r
|
|||
|
* |=======================================| | y
|
|||
|
* | dtqo_s for module Y | |
|
|||
|
* |---------------------------------------| | I
|
|||
|
* | module Y pathname string | | n
|
|||
|
* |=======================================| | f
|
|||
|
* | etc. | <---------- o
|
|||
|
* |=======================================|
|
|||
|
* |_______________________________________|
|
|||
|
*
|
|||
|
*/
|
|||
|
|
|||
|
|
|||
|
/* WSI file header format */
|
|||
|
struct wsihdr_s {
|
|||
|
CHAR wsihdr_chSignature[4]; // file signature
|
|||
|
ULONG wsihdr_ulLevel; // format level
|
|||
|
ULONG wsihdr_ulTimeStamp; // time stamp
|
|||
|
ULONG wsihdr_ulOffGetvar; // offset to DT_GETVAR data
|
|||
|
ULONG wsihdr_ulOffQuery; // offset to DT_QUERY data
|
|||
|
ULONG wsihdr_cbFile; // size of file (in bytes)
|
|||
|
ULONG wsihdr_ulSnaps; // number of snapshots
|
|||
|
};
|
|||
|
|
|||
|
typedef struct wsihdr_s wsihdr_t;
|
|||
|
|
|||
|
/*
|
|||
|
* WSP file layout:
|
|||
|
*
|
|||
|
* _________________________________________
|
|||
|
* | |
|
|||
|
* | wsphdr_s |
|
|||
|
* |---------------------------------------|
|
|||
|
* | module pathname array |
|
|||
|
* |_______________________________________|
|
|||
|
* |_______________________________________|
|
|||
|
* | function #0 bitstring |
|
|||
|
* | (rounded to DWORD boundary) |
|
|||
|
* |=======================================|
|
|||
|
* | function #1 bitstring |
|
|||
|
* |=======================================|
|
|||
|
* | etc. |
|
|||
|
* |=======================================|
|
|||
|
* |_______________________________________|
|
|||
|
*
|
|||
|
*/
|
|||
|
|
|||
|
/* WSP file header format */
|
|||
|
struct wsphdr_s {
|
|||
|
CHAR wsphdr_chSignature[4]; // file signature
|
|||
|
ULONG wsphdr_ulTimeStamp; // time stamp
|
|||
|
dtqo_t wsphdr_dtqo; // query info
|
|||
|
ULONG wsphdr_ulOffBits; // offset to first bitstring
|
|||
|
ULONG wsphdr_ulSnaps; // number of snapshots
|
|||
|
/* followed by module pathname char array, length specified in dtqo */
|
|||
|
};
|
|||
|
|
|||
|
typedef struct wsphdr_s wsphdr_t;
|
|||
|
|
|||
|
|
|||
|
/*
|
|||
|
* TMI file layout:
|
|||
|
*
|
|||
|
* _________________________________________
|
|||
|
* | |
|
|||
|
* | tmihdr_s |
|
|||
|
* |_______________________________________|
|
|||
|
* |_______________________________________|
|
|||
|
* | function #0 tmirec_s |
|
|||
|
* |---------------------------------------|
|
|||
|
* | function #0 name array |
|
|||
|
* |=======================================|
|
|||
|
* | function #1 tmirec_s |
|
|||
|
* |---------------------------------------|
|
|||
|
* | function #1 name array |
|
|||
|
* |=======================================|
|
|||
|
* | etc. |
|
|||
|
* |=======================================|
|
|||
|
* |_______________________________________|
|
|||
|
*
|
|||
|
*/
|
|||
|
|
|||
|
/* TMI file header. */
|
|||
|
typedef struct tmihdr_s {
|
|||
|
CHAR tmihdr_chSignature[4]; // "TMI\0"
|
|||
|
USHORT tmihdr_usMajor; // Range 0x0001 to 0x00FF
|
|||
|
USHORT tmihdr_cTmiRec; // Number of tmirec in file
|
|||
|
CHAR tmihdr_chModName[256]; // Name of traced module
|
|||
|
USHORT tmihdr_usID; // Module identifier
|
|||
|
CHAR tmihdr_resv[30]; // Reserved
|
|||
|
};
|
|||
|
|
|||
|
typedef struct tmihdr_s tmihdr_t;
|
|||
|
|
|||
|
/* Per-function information from TMI file */
|
|||
|
struct tmirec_s {
|
|||
|
ULONG tmirec_ulFxnIndex; // function's bit reference position
|
|||
|
ULONG tmirec_usFxnAddrObj; // object portion of function address
|
|||
|
ULONG tmirec_ulFxnAddrOff; // offset portion of function address
|
|||
|
ULONG tmirec_cbFxn; // size of function (in bytes)
|
|||
|
USHORT tmirec_cbFxnName; // size in bytes of function name
|
|||
|
CHAR tmirec_FxnName[1]; // bytes of function name start here
|
|||
|
};
|
|||
|
|
|||
|
typedef struct tmirec_s tmirec_t;
|
|||
|
|