You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
208 lines
6.3 KiB
208 lines
6.3 KiB
/*++
|
|
|
|
Copyright (c) 2000-2002 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
timetrace.h
|
|
|
|
Abstract:
|
|
|
|
This module contains public declarations and definitions for tracing
|
|
and debugging the timing of request processing.
|
|
|
|
Author:
|
|
|
|
Michael Courage (mcourage) 8-Mar-2000
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
|
|
#ifndef _TIMETRACE_H_
|
|
#define _TIMETRACE_H_
|
|
|
|
|
|
//
|
|
// This defines the entry written to the trace log.
|
|
//
|
|
|
|
typedef struct _TIME_TRACE_LOG_ENTRY
|
|
{
|
|
ULONGLONG TimeStamp;
|
|
HTTP_CONNECTION_ID ConnectionId;
|
|
HTTP_REQUEST_ID RequestId;
|
|
USHORT Action;
|
|
USHORT Processor;
|
|
|
|
} TIME_TRACE_LOG_ENTRY, *PTIME_TRACE_LOG_ENTRY;
|
|
|
|
|
|
//
|
|
// Action codes.
|
|
//
|
|
// N.B. These codes must be contiguous, starting at zero. If you update
|
|
// this list, you must also update the corresponding array in
|
|
// ul\ulkd\time.c.
|
|
//
|
|
|
|
#define TIME_ACTION_CREATE_CONNECTION 0
|
|
#define TIME_ACTION_CREATE_REQUEST 1
|
|
#define TIME_ACTION_ROUTE_REQUEST 2
|
|
#define TIME_ACTION_COPY_REQUEST 3
|
|
#define TIME_ACTION_SEND_RESPONSE 4
|
|
#define TIME_ACTION_SEND_COMPLETE 5
|
|
|
|
#define TIME_ACTION_COUNT 6
|
|
|
|
#define TIME_TRACE_LOG_SIGNATURE MAKE_SIGNATURE('TmLg')
|
|
|
|
//
|
|
// Manipulators.
|
|
//
|
|
|
|
PTRACE_LOG
|
|
CreateTimeTraceLog(
|
|
IN LONG LogSize,
|
|
IN LONG ExtraBytesInHeader
|
|
);
|
|
|
|
VOID
|
|
DestroyTimeTraceLog(
|
|
IN PTRACE_LOG pLog
|
|
);
|
|
|
|
VOID
|
|
WriteTimeTraceLog(
|
|
IN PTRACE_LOG pLog,
|
|
IN HTTP_CONNECTION_ID ConnectionId,
|
|
IN HTTP_REQUEST_ID RequestId,
|
|
IN USHORT Action
|
|
);
|
|
|
|
|
|
#if ENABLE_TIME_TRACE
|
|
|
|
#define CREATE_TIME_TRACE_LOG( ptr, size, extra ) \
|
|
(ptr) = CreateTimeTraceLog( (size), (extra) )
|
|
|
|
#define DESTROY_TIME_TRACE_LOG( ptr ) \
|
|
do \
|
|
{ \
|
|
DestroyTimeTraceLog( ptr ); \
|
|
(ptr) = NULL; \
|
|
} while (FALSE, FALSE)
|
|
|
|
#define WRITE_TIME_TRACE_LOG( plog, cid, rid, act ) \
|
|
WriteTimeTraceLog( \
|
|
(plog), \
|
|
(cid), \
|
|
(rid), \
|
|
(act) \
|
|
)
|
|
|
|
#else // !ENABLE_TIME_TRACE
|
|
|
|
#define CREATE_TIME_TRACE_LOG( ptr, size, extra ) NOP_FUNCTION
|
|
#define DESTROY_TIME_TRACE_LOG( ptr ) NOP_FUNCTION
|
|
#define WRITE_TIME_TRACE_LOG( plog, cid, rid, act ) NOP_FUNCTION
|
|
|
|
#endif // ENABLE_TIME_TRACE
|
|
|
|
#define TRACE_TIME( cid, rid, act ) \
|
|
WRITE_TIME_TRACE_LOG( \
|
|
g_pTimeTraceLog, \
|
|
(cid), \
|
|
(rid), \
|
|
(act) \
|
|
)
|
|
|
|
|
|
//
|
|
// This defines the entry written to the appool time trace log.
|
|
//
|
|
|
|
typedef struct _APP_POOL_TIME_TRACE_LOG_ENTRY
|
|
{
|
|
ULONGLONG TimeStamp;
|
|
PVOID Context1; // For PUL_APP_POOL_OBJECT
|
|
PVOID Context2; // For PUL_APP_POOL_PROCESS
|
|
USHORT Action; // One of the below
|
|
USHORT Processor;
|
|
|
|
} APP_POOL_TIME_TRACE_LOG_ENTRY, *PAPP_POOL_TIME_TRACE_LOG_ENTRY;
|
|
|
|
//
|
|
// Action codes.
|
|
//
|
|
// N.B. Do not forget to update !ulkd.atimelog if you update this.
|
|
//
|
|
|
|
#define APP_POOL_TIME_ACTION_CREATE_APPOOL 0
|
|
#define APP_POOL_TIME_ACTION_MARK_APPOOL_ACTIVE 1
|
|
#define APP_POOL_TIME_ACTION_MARK_APPOOL_INACTIVE 2
|
|
#define APP_POOL_TIME_ACTION_CREATE_PROCESS 3
|
|
#define APP_POOL_TIME_ACTION_DETACH_PROCESS 4
|
|
#define APP_POOL_TIME_ACTION_DETACH_PROCESS_COMPLETE 5
|
|
#define APP_POOL_TIME_ACTION_DESTROY_APPOOL 6
|
|
#define APP_POOL_TIME_ACTION_DESTROY_APPOOL_PROCESS 7
|
|
#define APP_POOL_TIME_ACTION_LOAD_BAL_CAPABILITY 8
|
|
|
|
#define APP_POOL_TIME_ACTION_COUNT 9
|
|
|
|
#define APP_POOL_TIME_TRACE_LOG_SIGNATURE MAKE_SIGNATURE('TaLg')
|
|
|
|
//
|
|
// Manipulators.
|
|
//
|
|
|
|
PTRACE_LOG
|
|
CreateAppPoolTimeTraceLog(
|
|
IN LONG LogSize,
|
|
IN LONG ExtraBytesInHeader
|
|
);
|
|
|
|
VOID
|
|
DestroyAppPoolTimeTraceLog(
|
|
IN PTRACE_LOG pLog
|
|
);
|
|
|
|
VOID
|
|
WriteAppPoolTimeTraceLog(
|
|
IN PTRACE_LOG pLog,
|
|
IN PVOID Context1,
|
|
IN PVOID Context2,
|
|
IN USHORT Action
|
|
);
|
|
|
|
#if ENABLE_APP_POOL_TIME_TRACE
|
|
|
|
#define CREATE_APP_POOL_TIME_TRACE_LOG( ptr, size, extra ) \
|
|
(ptr) = CreateAppPoolTimeTraceLog( (size), (extra) )
|
|
|
|
#define DESTROY_APP_POOL_TIME_TRACE_LOG( ptr ) \
|
|
do \
|
|
{ \
|
|
DestroyAppPoolTimeTraceLog( ptr ); \
|
|
(ptr) = NULL; \
|
|
} while (FALSE, FALSE)
|
|
|
|
#define WRITE_APP_POOL_TIME_TRACE_LOG( c1, c2, act ) \
|
|
WriteAppPoolTimeTraceLog( \
|
|
(g_pAppPoolTimeTraceLog), \
|
|
(c1), \
|
|
(c2), \
|
|
(act) \
|
|
)
|
|
|
|
#else // !ENABLE_APP_POOL_TIME_TRACE
|
|
|
|
#define CREATE_APP_POOL_TIME_TRACE_LOG( ptr, size, extra ) NOP_FUNCTION
|
|
#define DESTROY_APP_POOL_TIME_TRACE_LOG( ptr ) NOP_FUNCTION
|
|
#define WRITE_APP_POOL_TIME_TRACE_LOG( c1, c2, act ) NOP_FUNCTION
|
|
|
|
#endif // ENABLE_APP_POOL_TIME_TRACE
|
|
|
|
|
|
#endif // _TIMETRACE_H_
|